如何在无限循环中调用AsyncTask并同时更新ListView?

时间:2015-10-28 06:27:35

标签: android listview android-fragments android-asynctask

我刚刚开始学习Android,我正在尝试使用片段中的AsyncTask进行网络服务调用。当我停止接收数据时,我希望AsyncTask停止。我还想在ListView的{​​{1}}方法中更新onPostExecute()。我尝试了以下但我无法让它工作。 AsyncTask仅在第一次运行并停止。我应该做些什么改变?

我的AsyncTask及其Fragment方法中的代码

onCreateView()

我的 JSONObject dataReceiverObject; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { int param1, param2; while (true){ new MyAsyncTaskClass().execute(param1,param2); param1 = param2; param2 = param2 + 10; if (dataReceiverObject==null) break; } return view; } 课程中的代码

AsyncTask

2 个答案:

答案 0 :(得分:0)

在doInBackground()方法中调用一个线程

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

            dataReceiverObject = //fetch JSON data by passing 
            //params[0] and params[1]

       //after receiving data from web server call new thread and pass the received data as parameter
      updateListView(arraylistObject);
    } catch (Exception e) {

        e.printStackTrace();
    }
}

现在定义方法如下

public void updateListView(final String[] arraylistObj){

    runOnUiThread(new Runnable() {
         @Override
         public void run() {
              if(arraylistObj.length>0){
               adapter = new MyListAdapter(getActivity(), arraylistObject);
                adapter.notifyDataSetChanged();
                listView.setAdapter(adapter);
             }
          }
       });
     }

答案 1 :(得分:0)

从onPostExecute函数执行新的AsyncTask,直到从Web服务获取所有数据,使用索引来维护下载的数据。