在Android中使用ListAdapter和下载的数据

时间:2013-03-09 12:44:28

标签: android json android-asynctask adapter

我正在考虑如何为Activity填充布局,其内容将基于下载的已解析json数据。

我想过使用AsyncTask 1)下载数据,2)解析它和3)更新UI但我使用的ListAdapter必须在主线程上,所以我不能把它放在AsyncTask的onPostExecute方法中。关于我应该采取什么方法,我有点困惑。任何指针都非常赞赏。

1 个答案:

答案 0 :(得分:0)

在此示例中执行此操作:

 private class DownloadFilesTask extends AsyncTask<URL, Integer, Long> {
 protected Long doInBackground(URL... urls) {
     int count = urls.length;
     long totalSize = 0;
     for (int i = 0; i < count; i++) {
         totalSize += Downloader.downloadFile(urls[i]);
         publishProgress((int) ((i / (float) count) * 100));
         // Escape early if cancel() is called
         if (isCancelled()) break;
     }
     return totalSize;
 }

 protected void onProgressUpdate(Integer... progress) {
     setProgressPercent(progress[0]);
 }

 protected void onPostExecute(Long result) {
     showDialog("Downloaded " + result + " bytes");
 }

}

http://developer.android.com/reference/android/os/AsyncTask.html

doInBackground(Params ... para)中做你想做的事。如果要更新UI或ListAdapter。调用 publishProgress(Params pa),它将调用 onProgressUpdate(Integer ... progress)。在此功能中,您可以更新UI,更新数据或在主线程上执行您想要的操作。

希望它有所帮助。