0

LiveData一个用户列表:

val users: MutableLiveData<List<User>>

然后更新:

val usersValues = users.getValues()
val user = usersValues[0]
user.name = "new-name"
users.post(usersValues)

DiffUtil没有看到不同,因为User是同一个对象,所以它只是在内部更新Adapter

fun areContentsTheSame(int a, int b): Boolean {
    val oldUser //User@666
    val newUser //User@666
    return oldUser.id == newUser.id || oldUser.name == newUser.name
}

一种解决方案是创建一个新实例或副本,然后DiffUtil会注意到差异。有更好的吗?

4

1 回答 1

0

也许这会帮助你

override fun areItemsTheSame(oldItemPosition: Int, newItemPosition: Int): Boolean
        = oldList[oldItemPosition].id == newList[newItemPosition].id

如果您想通过 ids 或其他方式检查,您可以根据您的要求进行一些修改

于 2020-03-10T15:44:47.467 回答