【问题标题】:how using asynctask for add to arraylist如何使用 asynctask 添加到 arraylist
【发布时间】:2015-08-29 23:27:34
【问题描述】:

如何在 asynctask 中使用 'do while' 来添加到数组列表?请解释移动代码,感谢所有响应的人

代码:

public List<msgstore> results =new ArrayList<msgstore>();


    AsyncTask<Void, Void, Void>task=new AsyncTask<Void, Void, Void>(){
                            ProgressDialog pd = new ProgressDialog(mContext);
                            @Override
                            protected void onPreExecute() {
                                pd.setTitle("Process");
                                pd.setMessage("Processing ....");
                                pd.setCancelable(false);
                                pd.setIndeterminate(true);
                                pd.show();
                            }


                            @Override
                            protected Void doInBackground(Void... params) {

                                do{

                                      String d=mCur.getString(mCur.getColumnIndex("address"));
                                      String p= mCur.getString(mCur.getColumnIndex("phone")); 
                                      int    k=mCur.getInt(mCur.getColumnIndex("key"));
                                      int    i=mCur.getInt(mCur.getColumnIndex("_id"));
                                      long t=mCur.getLong(mCur.getColumnIndex("registertime"));
                                      results.add(new msgstore(d,p,k,i,t));


                                  }while(mCur.moveToNext());                
                                return null;
                            }


                            @Override
                            protected void onPostExecute(Void result) {
                                pd.dismiss();
                            }
                        };
                        task.execute((Void[])null);

【问题讨论】:

  • 您能解释一下您遇到了什么问题吗?
  • @codeMagic,不工作,崩溃应用
  • 如果应用程序崩溃,那么您需要提供崩溃后的堆栈跟踪,以便我们提供帮助

标签: android arraylist android-asynctask while-loop


【解决方案1】:

我没有足够的声誉来发表评论,所以我会在这里添加我的评论。 mCur 在哪里定义?您使用 moveToNext 执行 do/while 循环,这非常危险,因为光标可能为空。

尝试做一个while循环

while(mCur.moveToNext()) {
     String d=mCur.getString(mCur.getColumnIndex("address"));
     String p= mCur.getString(mCur.getColumnIndex("phone")); 
     int    k=mCur.getInt(mCur.getColumnIndex("key"));
     int    i=mCur.getInt(mCur.getColumnIndex("_id"));
     long t=mCur.getLong(mCur.getColumnIndex("registertime"));
     results.add(new msgstore(d,p,k,i,t));
}

之后还要确保关闭光标

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-11-08
    • 1970-01-01
    • 2015-03-30
    • 1970-01-01
    • 2017-09-19
    • 1970-01-01
    • 2014-10-02
    相关资源
    最近更新 更多