android – RecyclerView.ViewHolder的部分更新

前端之家收集整理的这篇文章主要介绍了android – RecyclerView.ViewHolder的部分更新前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试在RecyclerView中随时更改该字段.每个ViewHolder单独包含一个CardView和其他几个视图.我想要动画的唯一视图是随着时间的推移.你可以看到,没有动画:
adapter.notifyDataSetChanged();

逐个更新项目并不有帮助,因为整个CardView闪烁:

int len = adapter.getItemCount();
for(int i=0;i<len;i++) {
    adapter.notifyItemChanged(i);
}

有没有办法获取所有ViewHolders的列表,然后更新(动画)只是一个TextView里面的每一个?

解决方法

您可以通知您的RecyclerView.Adapter的观察者通过传递一个有效载荷对其进行部分更新RecyclerView.ViewHolders.
notifyItemRangeChanged(positionStart,itemCount,payload);

有效载荷可以是或包含代表相对或绝对时间的标志.要将有效负载绑定到视图持有者,请覆盖适配器中的以下onBindViewHolder(viewHolder,position,payloads)方法,并检查数据的payloads参数.

@Override
public void onBindViewHolder(MyViewHolder viewHolder,int position,List<Object> payloads) {
    if (payloads.isEmpty()) {
        // Perform a full update
        onBindViewHolder(viewHolder,position);
    } else {
        // Perform a partial update
        for (Object payload : payloads) {
            if (payload instanceof TimeFormatPayload) {
                viewHolder.bindTimePayload((TimeFormatPayload) payload);
            }
        }
    }
}

在MyViewHolder.bindTimePayload(payload)方法中,将TextViews更新为有效内容中指定的时间格式.

猜你在找的Android相关文章