我有一个普通旧数据类型的 recyclerview 适配器,在我的例子中是 char。
适配器由列表支持。
setChar 方法更新列表。
假设在我的情况下,setChar 仅使用与适配器相同的列表调用,但仅使用移动的项目。
fun setChar(list: List<Char>) {
val diffResult = DiffUtil.calculateDiff(CharDiffCallBack(mChars, list), true)
mChars = list
diffResult.dispatchUpdatesTo(this)
}
class CharDiffCallBack(private val mOldList: List<Char>, private val mNewList: List<Char>) :
DiffUtil.Callback() {
override fun getOldListSize() = mOldList.size
override fun getNewListSize() = mNewList.size
override fun areItemsTheSame(oldItemPosition: Int, newItemPosition: Int) = mOldList[oldItemPosition] == mNewList[newItemPosition]
override fun areContentsTheSame(oldItemPosition: Int, newItemPosition: Int) = false
}
DiffUtil.Callback 的正确实现是什么,以便将动作正确地设置为 recyclerview 的动作?
目前,它的动画效果就好像该项目被移除并重新插入一样。