这里是我的定制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()。
只有在这个序列中,它是工作刷新适配器。
问题是:也许有另一个(更简单的)解决方案来刷新适配器?
发布于 2018-01-25 09:22:09
如果允许null作为数据源,则可以简化完全刷新方法:
public void updateData(List data) {
this.data = data;
notifyDataSetChanged();
}支持库中也有用于处理RecyclerView模型更新的类:DiffUtil
如果您需要以更优雅的方式处理move/add/remove,这绝对值得一看。
发布于 2018-01-25 09:29:39
将notifyDataSetChanged()放在活动或片段中,并从适配器调用它。
https://stackoverflow.com/questions/48439279
复制相似问题