普通的数据刷新方法
RecyclerView.Adapter.notifyDataSetChanged();
或者刷新单条数据(内容改变、item插入、item移除)
RecyclerView.Adapter.notifyItemChanged(int position);
...
RecyclerView.Adapter.notifyItemInserted(int position);
...
RecyclerView.Adapter.notifyItemRemoved(int position);
当普通的数据刷新方法不能满足需求的时候,请接着看下去。
进阶的数据刷新方法
在RecyclerView的Adapter中重写下面的方法
代码如下
@Override
public void onBindViewHolder(@NonNull ViewHolder holder, int position, @NonNull List<Object> payloads) {
Bundle payload = (Bundle) payloads.get(0);
CompositionBean bean = mList.get(position);
for (String key : payload.keySet()) {
switch (key) {
case "key_0":
//执行对应的内容刷新操作
break;
case "key_1":
//执行对应的内容刷新操作
break;
}
}
}
刷新数据代码如下
//mList的数据更新和普通数据刷新一样
Bundle bundle = new Bundle();
bundle.putInt("key_0", value_0);
bundle.putString("key_1", value_1);
adapter.notifyItemChanged(position, bundle);
以上的数据刷新方法适用于单条或者少数数据需要刷新的情况,当整个列表的数据都需要刷新的时候,可以使用v7包下的DiffUtil类。
高级的数据刷新方法 – 使用DiffUtil
(以下为例子)
首先实体类CompositionBean.class