我知道这个问题很老,但我不得不做同样的事情,我想我会与你分享解决方案,否则任何人都需要它。
首先,您确实需要使用 anAsyncTask来检索您的数据。话虽这么说,我永远不会让 AsyncTask 以任何方式操纵我的视图类。相反,我宁愿在 AsyncTask 中使用与您需要的参数一起传递的回调。一旦 AsyncTask 完成,您将调用您的回调方法,该方法将负责调用notifyDataSetChanged().
这是一些代码:
MyAsyncTask.java
public class MyAsyncTask extends AsyncTask<Object, Void, Object> {
@Override
protected String doInBackground(Object... params) {
MyController callbackClass = (MyController) params[0];
// Get your other parameters and do your stuff here...
// Call the setter with the data you get back and refresh the view
// either here or implementing onPostExecute.
callbackClass.setMyData(myData);
callbackClass.refreshView();
// Return any object if you need.
return null;
}
}
MyCallbackClass.java
public MyCallbackClass extends Fragment{
private List<MyDataType> myData;
private ArrayAdapter<MyDataType> myAdapter;
// Your methods including setters and getters.
public void refreshFriendList(){
if(myAdapter == null){
initAutoCompleteView();
}
myAdapter.clear();
myAdapter.addAll(myData);
myAdapter.notifyDataSetChanged();
}
}