gpt4 book ai didi

java - 如何从 AsyncTask 的 postExecute 方法修改 ArrayAdapter 的数据

转载 作者:行者123 更新时间:2023-12-02 04:57:59 25 4
gpt4 key购买 nike

我有一个 fragment ,在 onCreateView 中我有一个适配器和一个 ListView :

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 类未定义为内部类,那么我建议您创建一个带有回调的接口(interface)。举个例子吧。

public interface Updatable { 
public void onDataUpdate(List<String> data);
}

稍后,您必须在 fragment 中实现该接口(interface),并在 AsyncTask 类中创建 setUpdatableListener 方法。因此,您首先创建 AsyncTask 实例,然后调用 setUpdatableListener 传递监听器,然后调用execute。稍后在 postExecute 方法上您必须执行以下操作:

mListener.onDataUpdate(result);

当然,稍后 fragment 中的监听器将负责更新 mAdapter 数据和 ListView。

请检查这个问题:

How to Define Callbacks in Android?

有关如何使用接口(interface)和回调的快速简单说明。

关于java - 如何从 AsyncTask 的 postExecute 方法修改 ArrayAdapter 的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28588530/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com