有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
会注意到差异。有更好的吗?