这是我的问题:
我获得了手机的GPS坐标,我将它们与Google Directions API一起使用,以获得手机与我镇上一些建筑物之间的距离。建筑物位置存储在xml文件中。
我使用asyncTask循环所有建筑物坐标,并从谷歌api获取建筑物和手机之间的距离。
问题在于,有时当我有很多建筑物需要很长时间才能完成所有请求,然后显示清单,我想知道如何做到这一点:
每次请求完成后如何更新listView:
例如:第一次列表为空时,我向google api发出请求,我在列表中得到1个项目,然后是另一个请求。这样我就不需要等到所有请求都已完成。
我认为如果我有20个建筑坐标不是创建20个异步任务实例的解决方案。
谢谢你, 克特林
答案 0 :(得分:0)
IMO在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()
}
希望有所帮助。