import androidx.databinding.ObservableArrayList
object DataBindingDifferUtils {
inline fun <reified T:Any> updateList(oldList: ObservableArrayList<T>, newList:List<T>?) {
if (newList == null) return
val newSize = newList.size
val oldSize = oldList.size
val minSize = Math.min(newSize,oldSize)
val maxSize = Math.max(newSize,oldSize)
for (idx in 0 until minSize) {
oldList[idx] = newList[idx]
}
val offset = newSize - oldSize
if (offset > 0) {
for (idx in minSize until maxSize) {
oldList.add(newList[idx])
}
} else {
for (idx in (maxSize-1) downTo minSize) {
oldList.removeAt(idx)
}
}
}
}
使用Databinding更新集合列表的方法
于 2023-05-18 14:48:54 首次发布
该代码片段展示了一个Kotlin的内联函数,用于更新AndroidXDataBinding中的ObservableArrayList。函数接受一个旧列表和一个新列表作为参数,高效地处理添加和删除元素,确保数据绑定列表的正确更新。它首先找到两个列表的最小长度,同步对应项,然后处理大小不一致的情况,增加或减少列表元素。
摘要由CSDN通过智能技术生成