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 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,局部刷新操作虽然生效,但会同时刷新整个列表。

你可能感兴趣的:(RecyclerView局部刷新无效问题)