当AsyncTask位于适配器内时刷新ListView

时间:2015-10-12 12:21:59

标签: android listview android-listview android-asynctask

我有一个ListView和一个自定义适配器。自定义适配器实现AsyncTask以从服务器加载一些图像。创建活动时,一切正常。但是,ListView有一个Load Button来加载更多行,每行包含一个图像。按下de Load按钮时,新数据(图像)将正确添加到ListView。但是,尽管调用了notifyDataSetChanged,但不会刷新ListView。我必须移动scoll来刷新ListView并显示新数据。问题是新的图像被加载到适配器内的AsyncTask中,当在MainActivity中调用notifyDataSetChanged时,AsyncTask还没有完成。所以,我的问题是:AsyncTask完成后有没有办法刷新ListView?在Adapter或其他替代方案中调用notifyDataSetChanged?

2 个答案:

答案 0 :(得分:0)

在你的asynctask onPostExecute中它应该是这样的:

@Override
  protected void onPostExecute(String result) {
   ((MainActivity) getActivity).notifyDataChanged();
  }

根据您的代码的组织方式,您将以某种类似于此的方式致电notifyDataChanged()

答案 1 :(得分:0)

  

所以,我的问题是:AsyncTask完成后有没有办法刷新ListView?

是的,你可以这样做:

  1. ListView 传递给 AsyncTask
  2. 覆盖onPostExecute()方法,
  3. notifyDataChanged方法中致电onPostExecute()