DiffUtils 遇到 Kotlin,榨干视图局部刷新的最后一滴性能

DiffUtils 的简单使用


DiffUtils 的使用起来也很简单,只需要简单的传入一个DiffCallback,重写其中的几个方法,DiffUtils 就能对比出新旧数据集差异,根据差异内容自动触发Adapter 的 增删改 通知,这也是我们在App 中最常用的使用方法。

在下面的示例中都使用Car类型作为数据类。

data class Car(val band: String, val color: Int, val image: String, val price: Int) {

把Callback继续封装下,基本两行代码就可以实现adapter增删改的派发逻辑

val diffResult = DiffUtil.calculateDiff(SimpleDiffCallback(oldList, newList))

oldList.clear()

oldList.addAll(data)

diffResult.dispatchUpdatesTo(adapter)

//重写一个Callback 实现

class SimpleDiffCallback(

private val oldList: List,

private val newList: List

) : DiffUtil.Callback() {

override fun areItemsTheSame(lh: Int, rh: Int) = from[lh].band == to[rh].band

override fun getOldListSize(): Int = oldList.size

override fun getNewListSize(): Int = newList.size

override fun a

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值