我想要实现的是列表视图,其中填充了图像和与每个项目相关联的一些描述性文本。图像URL,文本都是从web-(Json响应)动态获取的。 实现Universal Image Loader是可能的解决方案。这就是我正在做的事情。
在onCreate()方法中将适配器设置为listview之前,启动一个新的Asyn任务以从web获取数据(图像URL,文本),然后将结果存储在相应的数组中.imageUrls& descTexts。
在异步调用之后,立即将适配器设置为列表视图。
在Adapter的getView()方法中,我使用这些imageUrls和descTexts数组来填充列表视图。
问题:,在使用填充的数组之前,我需要确保异步任务已经完成。如何执行此操作。 我可以使用异步任务类的getStatus()方法,但它会阻止UI线程。
这个问题的任何解决方案。或者我这样做是错误的。
答案 0 :(得分:0)
查看onPostExecute()
(http://developer.android.com/reference/android/os/AsyncTask.html#onPostExecute%28Result%29)的AsyncTask
方法。
只需将代码设置为此方法中的适配器,该方法在异步删除完成后立即运行。
所以,举个例子:
class MyAsyncTask extends AsyncTask<String, Void, Void>{
@Override
protected void onPreExecute() {
}
@Override
protected Void doInBackground(String... params) {
return null;
}
@Override
protected void onPostExecute(Void result) {
// create you adapter here and set it to the ListView
Adapter myAdapter = ...
myListView.setAdapter(myAdapter);
}
}