设置进度基本适配器对话框 [英] Set the progress dialog in base adapter
本文介绍了设置进度基本适配器对话框的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
这是我的列表视图适配器中,我发送列表视图数据到服务器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< Dcr_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屋!
查看全文