override fun onBindViewHolder(holder: ViewHolder, position: Int, payloads: MutableList<Any>) {}
注意不要重写
super.onBindViewHolder(holder, position, payloads)
父类实际调用了 全部view刷新的方法。
查看源码如下:
public void onBindViewHolder(@NonNull VH holder, int position,
@NonNull List<Object> payloads) {
onBindViewHolder(holder, position);
}
比如在 override fun onBindViewHolder(holder: ViewHolder, position: Int, payloads: MutableList<Any>) {}
中这样写,
if (payloads.isNotEmpty()) {
when (payloads[0]) {
UPDATE_AUDIO_COLLECT -> {
setCollectView(holder.binding as ItemAudioBinding, item.oralVO)
}
UPDATE_AUDIO_LIKE -> {
setLikeView(holder.binding as ItemAudioBinding, item.oralVO)
}
else -> {
onBindViewHolder(holder, position)
}
}
} else {
onBindViewHolder(holder, position)
}
使用时:
adapter.notifyItemChanged(pos, MyAdapter.UPDATE_AUDIO_COLLECT)
网友评论