RecyclerView局部刷新无效问题

RecyclerView 通过adapter设置payload,可以实现局部刷新列表中某个条目中的一小部分ui:
notifyItemRangeChanged(int positionStart, int itemCount, @Nullable Object payload)
上面是adapter的局部刷新方法。
adapter需重写下面的方法,并在方法里实现局部刷新:

    @Override
    public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position, @NonNull List<Object> payloads) {
        DebugLog.e("adapter", "onBindViewHolder:" + payloads + ";position=" + position);
        if (payloads != null && !payloads.isEmpty()) {
            //局部刷新
            String payload = (String) payloads.get(0);
            DebugLog.e("detail", "onBindViewHolder:payload=" + payload);
        } else {
            onBindViewHolder(holder, position);
        }
    }

注意:需设置recyclerView.setItemAnimator(null);如果不将ItemAnimator设置为null,局部刷新操作虽然生效,但会同时刷新整个列表。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。