【发布时间】:2020-03-10 15:31:43
【问题描述】:
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 会注意到差异。有没有更好的?
【问题讨论】:
标签: android android-livedata mutablelivedata android-diffutils