这是我的自定义RecyclerView.Adapter
public abstract class MyCustomRecyclerViewAdapter extends RecyclerView.Adapter {
private Context context;
private List<?> data = new ArrayList<>();
public DataBindingRecyclerViewAdapter(Context context, List<?> data) {
this.context = context;
if (data != null) {
this.data = data;
}
}
public void updateData(List data) {
this.data.clear();
if (data != null) {
this.data.addAll(data);
}
this.notifyDataSetChanged();
}
}
正如您所见,它有方法updateData()
。此方法刷新适配器。
如果仅使用方法notifyDataSetChanged
,则不是刷新适配器。我需要清除所有项目,然后使用addAll()
并最后调用notifyDataSetChanged()
。
只有按此顺序才能正常工作 - 刷新适配器。
问题是:或许有另一个(更简单的)解决方案来刷新适配器?
答案 0 :(得分:2)
如果允许null作为数据源,则可以简化完整刷新方法:
public void updateData(List data) {
this.data = data;
notifyDataSetChanged();
}
支持库中还有用于处理RecyclerView
模型更新的类:DiffUtil
如果你需要以更优雅的方式处理移动/添加/移除,那绝对值得一看。
答案 1 :(得分:0)
将您的notifyDataSetChanged()
放入活动或片段中,然后从适配器调用