Android 异步填充listView
这是我的问题: 我获取手机的gps坐标,并将其与Google Directions API结合使用,以获取手机与我所在城市的一些建筑物之间的距离。建筑物位置存储在xml文件中 我使用asyncTask循环所有建筑物的坐标,并从GoogleAPI获取建筑物和电话之间的距离 问题是,有时当我得到许多建筑物时,需要很长时间才能完成所有请求,然后才能显示列表,我想知道如何做到这一点: 如何在每次请求完成时更新listView: 例如:当列表第一次为空时,我向GoogleAPI发出一个请求,在列表中得到一个项目,然后是另一个请求。这样我就不用等到所有的请求都完成了 我认为,如果我有20个建筑物坐标,就不能创建20个异步任务实例 谢谢,,Android 异步填充listView,android,listview,android-asynctask,Android,Listview,Android Asynctask,这是我的问题: 我获取手机的gps坐标,并将其与Google Directions API结合使用,以获取手机与我所在城市的一些建筑物之间的距离。建筑物位置存储在xml文件中 我使用asyncTask循环所有建筑物的坐标,并从GoogleAPI获取建筑物和电话之间的距离 问题是,有时当我得到许多建筑物时,需要很长时间才能完成所有请求,然后才能显示列表,我想知道如何做到这一点: 如何在每次请求完成时更新listView: 例如:当列表第一次为空时,我向GoogleAPI发出一个请求,在列表中得到一
CatalinIMO在runOnUiThread中调用notifyDataSetChanged的最简单方法:
private class DownloadAsyncTask extends AsyncTask<Void, Recording, Void> {
protected Void doInBackground(Void... parms) {
for (DownloadTask task: tasks) {
DownloadData downloadData = downloadSomething(task);
runOnUiThread(new Runnable() {
public void run() {
listAdapter.add(downloadData);
listAdapter.notifyDataSetChanged();
}
});
}
} // end of doInBackground()
}
希望有帮助。或使用publishProgress从内部doInBackground并在UI线程内部处理它onProgressUpdate@FunkTheMonk,是的,这是一种更为面向对象的方式,尽管需要在doInBackground和onProgressUpdate之间使用carry/pass param/object,但可能不是最简单的方式: