我正在尝试在RecyclerView
完成其操作后更新AsyncTask
。
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Initializing RecycleView
mRecyclerView = (RecyclerView)findViewById(R.id.list);
mRecyclerView.setLayoutManager(new LinearLayoutManager(this));
mRecyclerView.setItemAnimator(new DefaultItemAnimator());
mAdapter = new AdvertAdapter(this.results, R.layout.card_advert, this);
mRecyclerView.setAdapter(mAdapter);
以下是我AsyncTask
的代码段:
@Override
protected void onPostExecute(String result){
// your stuff
listener.onTaskCompleted(data);
}
在侦听器Activity类中,我正在更新数据集并尝试通知我的自定义适配器数据集已更改:
@Override
public void onTaskCompleted(ArrayList<Data>results) {
this.results = results;
this.mAdapter.notifyDataSetChanged();
System.out.println("Done.");
}
似乎notifyDataSetChanged()
实际上并没有做任何事情,因为即使在最后一行之后,列表仍然是空的。从调试器中,我可以验证结果是否包含正确的结果,并且onTaskCompleted
正在主线程上运行。如何使用新结果更新我的RecyclerView
?
答案 0 :(得分:1)
我认为您应该将ArrayList<Data>results
添加到适配器数据中。
这样的事情:
@Override
public void onTaskCompleted(ArrayList<Data>results) {
//this.results = results;
this.mAdapter.clear();
this.mAdapter.add(results);
//or this.mAdapter.results = results;
this.mAdapter.notifyDataSetChanged();
System.out.println("Done.");
}