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

1 android adapter android-asynctask

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

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

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

Tim*_*m C 10

包含一个Delegate作为回调,以激活原始类中的刷新.

例如,添加此接口:

public interface AsyncDelegate {

    public void asyncComplete(boolean success);


}
Run Code Online (Sandbox Code Playgroud)

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

public class MyClass implements AsyncDelegate  {

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

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

}
Run Code Online (Sandbox Code Playgroud)

在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);
   }

}
Run Code Online (Sandbox Code Playgroud)

任务完成后,它将调用委托,这将触发刷新!