繁体   English   中英

更新RecyclerView.Adapter

[英]Update RecyclerView.Adapter

这是我自定义的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()

仅按此顺序有效-刷新适配器。

问题是:也许还有另一个(更简单的)解决方案来刷新适配器?

如果允许null作为数据源,则可以简化完整刷新方法:

public void updateData(List data) {
    this.data = data;
    notifyDataSetChanged();
}

支持库中还有一个用于处理RecyclerView模型更新的类: DiffUtil

如果您需要以更优雅的方式处理移动/添加/删除,那绝对值得一看。

将您的notifyDataSetChanged()放入活动或片段中,然后从适配器中调用它

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM