首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >更新RecyclerView.Adapter

更新RecyclerView.Adapter
EN

Stack Overflow用户
提问于 2018-01-25 09:15:47
回答 2查看 4.8K关注 0票数 1

这里是我的定制RecyclerView.Adapter

代码语言:javascript
复制
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()

只有在这个序列中,它是工作刷新适配器。

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-01-25 09:22:09

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

代码语言:javascript
复制
public void updateData(List data) {
    this.data = data;
    notifyDataSetChanged();
}

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

如果您需要以更优雅的方式处理move/add/remove,这绝对值得一看。

票数 3
EN

Stack Overflow用户

发布于 2018-01-25 09:29:39

notifyDataSetChanged()放在活动或片段中,并从适配器调用它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48439279

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档