gpt4 book ai didi

android - 从自定义适配器类调用的 AsyncTask 更新 ListView

转载 作者:行者123 更新时间:2023-11-29 14:25:08 25 4
gpt4 key购买 nike

我正在尝试从 AsyncTask 更新 ListView。我有这种情况:

  • Activity 类从自定义适配器类创建列表适配器。
  • 适配器类在列表项的元素上设置 onClickListener,并调用位于不同 Utilities 类中的 AsyncTask。

如何从 Utilities AsyncTask 中的 onPostExecute() 方法调用 notifyDataSetChanged?

最佳答案

包含一个Delegate 作为回调以从原始类中激活刷新。

比如添加这个接口(interface):

public interface AsyncDelegate {

public void asyncComplete(boolean success);


}

然后,在您的调用类中,实现该接口(interface),并将其传递给您的任务

public class MyClass implements AsyncDelegate  {

// Class stuff
MyAsyncTask newTask = new MyAsyncTask(this);
newTask.execute();

public void asyncComplete(boolean success){
myAdapter.notifyDataSetChanged();

}

在AsyncTask中,返回结果:

private class MyAsyncTask extends AsyncTask<Object, Object, Object> {

private AsyncDelegate delegate;

public MyAsyncTask (AsyncDelegate delegate){
this.delegate = delegate;
}

@Override
protected void onPostExecute(String result) {
delegate.asyncComplete(true);
}

}

当任务完成时,它会调用委托(delegate),这将触发刷新!

关于android - 从自定义适配器类调用的 AsyncTask 更新 ListView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15693086/

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