我有一个自定义 ListAdapter,它在 AsyncTask 中从 Internet 获取数据。
数据完美地添加到列表中,但是当我尝试执行操作时,应用程序崩溃了......
我确定这是因为我正在调用 notifyDataSetChanged(); 在错误的时间(即在 AsyncTask 结束之前)。
我现在拥有的:
public class MyListAdapter extends BaseAdapter {
private ArrayList<String> mStrings = new ArrayList<String>();
public MyListAdapter() {
new RetreiveStringsTask().execute(internet_url);
//here I call the notify function ****************
this.notifyDataSetChanged();
}
class RetreiveStringsTask extends AsyncTask<String, Void, ArrayList<String>> {
private Exception exception;
@Override
protected ArrayList<String> doInBackground(String... urls) {
try {
URL url= new URL(urls[0]);
//return arraylist
return getStringsFromInternet(url);;
} catch (Exception e) {
this.exception = e;
Log.e("AsyncTask", exception.toString());
return null;
}
}
@Override
protected void onPostExecute(ArrayList<String> stringsArray) {
//add the tours from internet to the array
if(stringsArray != null) {
mStrings.addAll(toursArray);
}
}
}
}
我的问题是:我可以从 AsyncTask 中的 onPostExecute 函数调用 notifyDataSetChanged() 还是在 AsyncTask 获取数据的任何其他时间调用?