我正在考虑如何为Activity填充布局,其内容将基于下载的已解析json数据。
我想过使用AsyncTask 1)下载数据,2)解析它和3)更新UI但我使用的ListAdapter必须在主线程上,所以我不能把它放在AsyncTask的onPostExecute方法中。关于我应该采取什么方法,我有点困惑。任何指针都非常赞赏。
答案 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,更新数据或在主线程上执行您想要的操作。
希望它有所帮助。