前言:为什么要使用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)
网友评论