更新RecyclerView.Adapter

时间:2018-01-25 09:15:48

标签: android recycler-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()

只有按此顺序才能正常工作 - 刷新适配器。

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

2 个答案:

答案 0 :(得分:2)

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

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

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

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

答案 1 :(得分:0)

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