设置进度基本适配器对话框 [英] Set the progress dialog in base adapter

查看:204
本文介绍了设置进度基本适配器对话框的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

这是我的列表视图适配器中,我发送列表视图数据到服务器ANS按钮时钟ASYN任务sqlite的。我想用一个进度对话框,但我有问题,而通过该活动的实例和我的code崩溃的进度对话框。

 公共类PlannningListViewAdapter延伸BaseAdapter {   上下文语境;
   公众的ArrayList<规划与GT; planArraylist;
   私有静态LayoutInflater吹气= NULL;
   公共PlanningList_activity planActivity;
   公众的ListView mListview;
   Db_sqlite databaseHelper;
   日历calObj = Calendar.getInstance();
   DateFormat的CDF =新的SimpleDateFormat(MM-DD-YYYY HH:MM:SS);
   串的currentdate = cdf.format(calObj.getTime())的toString();  公共PlannningListViewAdapter(上下文的背景下,ArrayList的<规划GT; planArraylist){
     this.context =背景;
     this.planArraylist = planArraylist;
     吹气=(LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
     databaseHelper =新Db_sqlite(背景);}
@覆盖
公众诠释的getCount(){
    返回planArraylist.size();
}
@覆盖
 公共规划的getItem(INT为arg0){
    返回planArraylist.get(为arg0);
}@覆盖
众长getItemId(INT为arg0){
    返回将arg0;
}
 @覆盖
    公共查看getView(INT位置,查看convertView,父母的ViewGroup){
           ViewHolder持有人;        如果(convertView == NULL){
            convertView = inflater.inflate(R.layout.single_lv_item,父母,假);
  持有人=新ViewHolder();            holder.tvdr code =(TextView中)onvertView.findViewById(R.id.Plan_no);
            holder.tvDrName =(TextView中)convertView.findViewById(R.id.doc_name);
            holder.tvterr code =(TextView中)convertView.findViewById(R.id.mon);
            holder.tvAdr =(TextView中)convertView.findViewById(R.id.adr);
            holder.tvClassDesc =(TextView中)convertView.findViewById(R.id.class_desc);
            holder.tvspeciality =(TextView中)convertView.findViewById(R.id.ff_ code);
            holder.tvAreaName =(TextView中)convertView.findViewById(R.id.area_name);
            holder.tvShift =(TextView中)convertView.findViewById(R.id.shift);
            holder.btn_visited =(按钮)convertView.findViewById(R.id.button1);
            holder.btn_visited.setTag(位置);
            holder.btn_visited.setOnClickListener(ButtonClickListener);            convertView.setTag(保持器);        }
        其他{
            支架=(ViewHolder)convertView.getTag();
        }        规划P = planArraylist.get(位置);
        holder.tvdr code.setText(p.getDoc code());
        holder.tvDrName.setText(p.getDocName());
        holder.tvterr code.setText(p.getTerr code());
        holder.tvAdr.setText(p.getAdr());
        holder.tvClassDesc.setText(p.getClassDesc());
        holder.tvspeciality.setText(p.getSP());
        holder.tvAreaName.setText(p.getAreaName());
        holder.tvShift.setText(p.getMornEven());        返回convertView;
    }     静态类ViewHolder {
         TextView的tvdr code;
         TextView的tvDrName;
         TextView的tvterr code;
         TextView的tvAdr;
         TextView的tvClassDesc;
         TextView的tvspeciality;
         TextView的tvAreaName;
         TextView的tvShift;
         按钮btn_visited;
    }
  私人OnClickListener ButtonNotVistedClickListener =新OnClickListener(){         公共无效的onClick(视图v){
             最终诠释位置=(整数)v.getTag(); //第二个方法STRING D = planArraylist.get(位置).getDoc code();
             规划规划=的getItem(位置);              串replan_no =1;
              字符串博士code = planning.getDoc code();
              字符串TERR code = planning.getTerr code();              字符串prev_plan_date =的currentdate;
              字符串replan_date =的currentdate;
              串移= planning.getMornEven();
              字符串CREATED_DATE =的currentdate;
              字符串nvr_no =783882;
              字符串SFF code = PlanningList_activity.FF code;
              字符串Sffmgr = PlanningList_activity.FFMGR;
            意向意图=新意图(context.getApplicationContext(),NotVisited_Activtiy.class); //转到考勤类
            intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);            捆绑userBundle =新包();
            userBundle.putString(DR_ code,planning.getDoc code());
            userBundle.putString(DR_NAME,planning.getDocName());
            userBundle.putString(TERR_ code,planning.getTerr code());
            userBundle.putString(ADR,planning.getAdr());
            userBundle.putString(CLASS_DESC,planning.getClassDesc());
            userBundle.putString(特产,planning.getSP());
            userBundle.putString(AREA_NAME,planning.getAreaName());
            userBundle.putString(SHIFT,planning.getMornEven());            intent.putExtras(userBundle);            context.startActivity(意向);
             }
            };    私人OnClickListener ButtonClickListener =新OnClickListener(){     公共无效的onClick(视图v){      最终诠释位置=(整数)v.getTag(); //第二个方法STRING D = planArraylist.get(位置).getDoc code();
      规划规划=的getItem(位置);      字符串dcr_date =的currentdate;
      字符串博士code = planning.getDoc code();
      串移= planning.getMornEven();
      字符串TERR code = planning.getTerr code();
      字符串CREATED_DATE =的currentdate;
      字符串ref_no =SLS51;
      字符串SFF code = PlanningList_activity.FF code;
      字符串Sffmgr = PlanningList_activity.FFMGR;     Dcr_main DVR =新Dcr_main(dcr_date博士,code,换档,SFF code,TERR code,Sffmgr,CREATED_DATE,ref_no);
     新SaveDCR(上下文).execute(DVR);    }
};保护类SaveDCR扩展的AsyncTask< D​​cr_main,太虚,太虚> {    上下文mcontext;
    ProgressDialog progressDialog;     公共SaveDCR(上下文mcontext){
            // TODO自动生成构造函数存根
              this.mcontext = mcontext;
          }        @覆盖
          在preExecute保护无效(){              progressDialog =新ProgressDialog(mcontext);
              progressDialog.setMessage(保存...);
              progressDialog.setCancelable(假);
              progressDialog.show();
              Log.e(送DVR对于SQLite,是);          }          @覆盖
           保护无效doInBackground(Dcr_main ... PARAMS){
             RESTAPI API =新RESTAPI();
             尝试
             {                //插入设备数据库
                databaseHelper.insertDVR(PARAMS [0] .getDcr_Date(),
                        PARAMS [0] .getDr_ code()
                        PARAMS [0] .getShift(),
                        PARAMS [0] .getFf_ code()
                        PARAMS [0] .getTerr_ code()
                        PARAMS [0] .getFF_mgr(),
                        PARAMS [0] .getCreatedDate(),
                        PARAMS [0] .getRef_no());
                Log.e(插入SQLite中DVR,是);
                databaseHelper .close();                   api.DVRInsert(PARAMS [0] .getDcr_Date(),
                            PARAMS [0] .getDr_ code()
                            PARAMS [0] .getShift(),
                            PARAMS [0] .getFf_ code()
                            PARAMS [0] .getTerr_ code()
                            PARAMS [0] .getFF_mgr(),
                            PARAMS [0] .getRef_no());
                     Log.e(发送到DVR服务器,请inbackground,是);               }
            赶上(例外五){
             // TODO自动生成catch块
                 Log.d(无法连接到服务器,e.getMessage());
           }
            返回null;
        }
        @覆盖
        保护无效onPostExecute(虚空结果){            如果(progressDialog.isShowing()){
                progressDialog.dismiss();
            }
          }
        }

我想不通的问题。对不起,这么多code,在此先感谢。
登录猫误差

  12月2日至九日:22:51.932:E / AndroidRuntime(26893):$ android.view.WindowManager BadTokenException:无法添加窗口 - 令牌null不是一个应用程序
12月2日至九日:22:51.932:E / AndroidRuntime(26893):在android.view.ViewRootImpl.setView(ViewRootImpl.java:540)
12月2日至九日:22:51.932:E / AndroidRuntime(26893):在android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:259)
12月2日至九日:22:51.932:E / AndroidRuntime(26893):在android.view.WindowManagerImpl.addView(WindowManagerImpl.java:69)
12月2日至九日:22:51.932:E / AndroidRuntime(26893):在android.app.Dialog.show(Dialog.java:286)
12月2日至九日:22:51.932:E / AndroidRuntime(26893):在com.example.db_client.PlannningListViewAdapter$SaveDCR.on$p$pExecute(PlannningListViewAdapter.java:235)
12月2日至九日:22:51.932:E / AndroidRuntime(26893):在android.os.AsyncTask.executeOnExecutor(AsyncTask.java:587)
12月2日至九日:22:51.932:E / AndroidRuntime(26893):在android.os.AsyncTask.execute(AsyncTask.java:535)
12月2日至九日:22:51.932:E / AndroidRuntime(26893):在com.example.db_client.PlannningListViewAdapter $ 2.onClick(PlannningListViewAdapter.java:213)
12月2日至九日:22:51.932:E / AndroidRuntime(26893):在android.view.View.performClick(View.java:4438)
12月2日至九日:22:51.932:E / AndroidRuntime(26893):在android.view.View $ PerformClick.run(View.java:18422)
12月2日至九日:22:51.932:E / AndroidRuntime(26893):在android.os.Handler.handleCallback(Handler.java:733)
12月2日至九日:22:51.932:E / AndroidRuntime(26893):在android.os.Handler.dispatchMessage(Handler.java:95)


解决方案

该问题可能是路怎么走上下文。请更改

 新PlannningListViewAdapter(getApplicationContext(),清单);

 新PlannningListViewAdapter(这一点,清单);

在你的活动

This is my list view adapter in which I am sending listview data to server ans sqlite on the button clock asyn task. I want to use a progress dialog but I'm having problem while passing the activity's instance and my code crashes on the progress dialog.

   public class PlannningListViewAdapter extends BaseAdapter{

   Context context;
   public ArrayList<Planning> planArraylist;
   private static LayoutInflater inflater = null;
   public PlanningList_activity planActivity;
   public ListView mListview;
   Db_sqlite databaseHelper;
   Calendar calObj = Calendar.getInstance();
   DateFormat cdf = new SimpleDateFormat("MM-dd-yyyy hh:mm:ss a");
   String currentDate = cdf.format(calObj.getTime()).toString();

  public PlannningListViewAdapter(Context context,ArrayList<Planning>   planArraylist) {
     this.context = context;
     this.planArraylist = planArraylist;
     inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
     databaseHelper = new Db_sqlite(context);

}
@Override
public int getCount() {
    return planArraylist.size();
}
@Override
 public Planning getItem(int arg0) {
    return planArraylist.get(arg0);
} 

@Override
public long getItemId(int arg0) {
    return arg0;
}
 @Override
    public View getView(int position, View convertView, ViewGroup parent) {
           ViewHolder holder;

        if (convertView == null) {
            convertView = inflater.inflate(R.layout.single_lv_item, parent, false);
  holder = new ViewHolder();

            holder.tvdrCode =(TextView)onvertView.findViewById(R.id.Plan_no);
            holder.tvDrName = (TextView) convertView.findViewById(R.id.doc_name);
            holder.tvterrcode= (TextView) convertView.findViewById(R.id.mon);
            holder.tvAdr = (TextView) convertView.findViewById(R.id.adr);
            holder.tvClassDesc = (TextView) convertView.findViewById(R.id.class_desc);
            holder.tvspeciality = (TextView) convertView.findViewById(R.id.ff_code);
            holder.tvAreaName = (TextView) convertView.findViewById(R.id.area_name);
            holder.tvShift = (TextView) convertView.findViewById(R.id.shift);
            holder.btn_visited =(Button)convertView.findViewById(R.id.button1);
            holder.btn_visited.setTag(position);
            holder.btn_visited.setOnClickListener(ButtonClickListener);

            convertView.setTag(holder);

        } 
        else {
            holder = (ViewHolder) convertView.getTag();
        }

        Planning p = planArraylist.get(position);
        holder.tvdrCode.setText(p.getDocCode());
        holder.tvDrName.setText(p.getDocName());
        holder.tvterrcode.setText(p.getTerrCode());
        holder.tvAdr.setText(p.getAdr());
        holder.tvClassDesc.setText(p.getClassDesc());
        holder.tvspeciality.setText(p.getSP());
        holder.tvAreaName.setText(p.getAreaName());
        holder.tvShift.setText(p.getMornEven());

        return convertView;
    }

     static class ViewHolder {
         TextView tvdrCode;
         TextView tvDrName;
         TextView tvterrcode;
         TextView tvAdr;
         TextView tvClassDesc;
         TextView tvspeciality;
         TextView tvAreaName;
         TextView tvShift;
         Button btn_visited;
    }
  private OnClickListener ButtonNotVistedClickListener = new OnClickListener(){

         public void onClick(View v) {
             final  int position = (Integer) v.getTag(); //2nd method  String d = planArraylist.get(position).getDocCode();
             Planning planning = getItem(position); 

              String replan_no = "1";
              String drCode =  planning.getDocCode();
              String terrcode = planning.getTerrCode();

              String prev_plan_date = currentDate;
              String replan_date = currentDate;
              String shift = planning.getMornEven();
              String created_date =currentDate;
              String nvr_no = "783882";
              String Sffcode = PlanningList_activity.FFCODE;
              String Sffmgr= PlanningList_activity.FFMGR;


            Intent intent=new Intent(context.getApplicationContext(),NotVisited_Activtiy.class); // goto to attendance class
            intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

            Bundle userBundle = new Bundle();
            userBundle.putString("DR_CODE", planning.getDocCode());
            userBundle.putString("DR_NAME",planning.getDocName());
            userBundle.putString("TERR_CODE", planning.getTerrCode());
            userBundle.putString("ADR", planning.getAdr());
            userBundle.putString("CLASS_DESC", planning.getClassDesc());
            userBundle.putString("SPECIALITY", planning.getSP());
            userBundle.putString("AREA_NAME", planning.getAreaName());
            userBundle.putString("SHIFT", planning.getMornEven());

            intent.putExtras(userBundle);

            context.startActivity(intent); 
             }
            };

    private OnClickListener ButtonClickListener = new OnClickListener() {

     public void onClick(View v) {

      final  int position = (Integer) v.getTag(); //2nd method  String d = planArraylist.get(position).getDocCode();
      Planning planning = getItem(position); 

      String dcr_date = currentDate;
      String drCode =  planning.getDocCode();
      String shift = planning.getMornEven();
      String terrcode = planning.getTerrCode();
      String created_date =currentDate;
      String ref_no = "SLS51";
      String Sffcode = PlanningList_activity.FFCODE;
      String Sffmgr= PlanningList_activity.FFMGR;

     Dcr_main dvr = new Dcr_main(dcr_date,drCode,shift,Sffcode,terrcode,Sffmgr,created_date,ref_no);
     new SaveDCR(context).execute(dvr);

    }
};

protected class SaveDCR extends AsyncTask<Dcr_main, Void, Void> {

    Context mcontext;
    ProgressDialog progressDialog;

     public SaveDCR(Context mcontext) {
            // TODO Auto-generated constructor stub
              this.mcontext = mcontext;
          }

        @Override
          protected void onPreExecute() {

              progressDialog = new ProgressDialog(mcontext);
              progressDialog.setMessage("Saving...");
              progressDialog.setCancelable(false);
              progressDialog.show();
              Log.e( "sending dvr to sqlite","yes"); 

          }  

          @Override
           protected Void doInBackground(Dcr_main... params) {
             RestAPI api = new RestAPI();
             try
             {

                // insert into device database
                databaseHelper.insertDVR(params[0].getDcr_Date(),
                        params[0].getDr_Code(),
                        params[0].getShift(),
                        params[0].getFf_code(),
                        params[0].getTerr_code(),
                        params[0].getFF_mgr(),
                        params[0].getCreatedDate(),
                        params[0].getRef_no());
                Log.e(" inserting dvr in sqlite","yes");               
                databaseHelper .close();     

                   api.DVRInsert(params[0].getDcr_Date(),
                            params[0].getDr_Code(),
                            params[0].getShift(),
                            params[0].getFf_code(),
                            params[0].getTerr_code(),
                            params[0].getFF_mgr(),
                            params[0].getRef_no());
                     Log.e( "sent dvr to server, do inbackground","yes");    

               }
            catch (Exception e) {
             // TODO Auto-generated catch block
                 Log.d("Failed to connect to server", e.getMessage());
           }
            return null;
        }


        @Override
        protected void onPostExecute(Void result) {

            if(progressDialog.isShowing()) {
                progressDialog.dismiss();


            } 
          }
        }

I cannot figure out the problem. Sorry for so much code, thanks in advance. Log cat error

02-09 12:22:51.932: E/AndroidRuntime(26893):     android.view.WindowManager$BadTokenException: Unable to add window -- token null    is not for an application
02-09 12:22:51.932: E/AndroidRuntime(26893):    at   android.view.ViewRootImpl.setView(ViewRootImpl.java:540)
02-09 12:22:51.932: E/AndroidRuntime(26893):    at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:259)
02-09 12:22:51.932: E/AndroidRuntime(26893):    at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:69)
02-09 12:22:51.932: E/AndroidRuntime(26893):    at android.app.Dialog.show(Dialog.java:286)
02-09 12:22:51.932: E/AndroidRuntime(26893):    at com.example.db_client.PlannningListViewAdapter$SaveDCR.onPreExecute(PlannningListViewAdapter.java:235)
02-09 12:22:51.932: E/AndroidRuntime(26893):    at android.os.AsyncTask.executeOnExecutor(AsyncTask.java:587)
02-09 12:22:51.932: E/AndroidRuntime(26893):    at android.os.AsyncTask.execute(AsyncTask.java:535)
02-09 12:22:51.932: E/AndroidRuntime(26893):    at com.example.db_client.PlannningListViewAdapter$2.onClick(PlannningListViewAdapter.java:213)
02-09 12:22:51.932: E/AndroidRuntime(26893):    at android.view.View.performClick(View.java:4438)
02-09 12:22:51.932: E/AndroidRuntime(26893):    at android.view.View$PerformClick.run(View.java:18422)
02-09 12:22:51.932: E/AndroidRuntime(26893):    at android.os.Handler.handleCallback(Handler.java:733)
02-09 12:22:51.932: E/AndroidRuntime(26893):    at android.os.Handler.dispatchMessage(Handler.java:95)

解决方案

The problem is probably with way how to get context. Please change

 new PlannningListViewAdapter(getApplicationContext(),list);

to :

 new PlannningListViewAdapter(this,list);

in your Activity

这篇关于设置进度基本适配器对话框的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆