recyclerView的局部刷新

2020-03-19  本文已影响0人  小企鹅丶zxy

前言:为什么要使用recyclerView的局部刷新功能,例如我们的列表有语音和视频正在播放,如果这时候需要刷新这个item上的某一个控件的数据,如果直接notifyItemChanged(position)就会直接导致视频或音频停止播放,所以我们有的时候会用到这个局部刷新功能。不废话直接上代码。

1.重写onBindViewHolder方法

    public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position, @NonNull List payloads) {}

2.根据payloads来刷新自己需要刷新的控件

public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position, @NonNull List payloads){

if (payloads.size() == 0 && payloads.isEmpty()) {   
 Log.e("120", "非局部刷新" + payloads);    
onBindViewHolder(holder, position);
} else {
 Log.e("120", "局部刷新" + payloads);
int payload;
try {   
 payload = (int) payloads.get(0);
} catch (Exception e) { 
   return;
}
if (payload == 1) {
Holder.setText(“123”);//需要单独刷新的控件
}
}

3.调用方式:
notifyItemChanged(positionIntent,1)

上一篇下一篇

猜你喜欢

热点阅读