【发布时间】:2015-02-18 16:24:27
【问题描述】:
我有一个片段,在 onCreateView 我有一个适配器和一个列表视图:
mAdapter = new ArrayAdapter<String>(getActivity(),
R.layout.list_item,
R.id.list_item_textview,
new ArrayList<String>());
View rootView = inflater.inflate(R.layout.fragment_main, container, false);
ListView listView = (ListView) rootView.findViewById(R.id.listeview);
listView.setAdapter(mAdapter)
我还有一个单独的 AsyncTask 类,我想在它的 onPostExecute 方法上向 mAdapter 添加项目:
@Override
protected void onPostExecute(String[] result) {
if(result !=null){
mAdapter.clear();
for(String mString: result){
mAdapter.add(mString);
}
我在 Fragment 的 onStart 方法中执行 AsyncTask :
@Override
public void onStart() {
super.onStart();
FetchData fetchData = new FetchData();
fetchData.execute(location);
}
如何在 AsyncTask 类上使用 Fragment 的 mAdapter 更新其数据,然后通知 listView?
【问题讨论】:
-
你是 AsyncTask 类,你的 Fragment 类的内部类吗?如果是,您可以只使用 mAdapter。如果没有,那么您可能需要实现一个带有回调的接口。使用 mAdapter.notifyDataSetChanged()
-
不,它在一个单独的类中
-
@dancer_69,你看到我链接到的 SO 问题了吗?另外考虑到这个任务是特定于单个 API 调用的,而且你对 android 很陌生,你可以使用 AsyncTask 作为嵌套类。
标签: java android listview android-asynctask