【发布时间】:2020-04-15 09:51:16
【问题描述】:
我有一个这样的数据类
data class TestModel(val id: Int, val sentence: String , var isPlaying: Boolean)
我制作了一个可变列表
val list: MutableList<TestModel> = arrayListOf(
TestModel(1,"test",false),
TestModel(2,"test2",false),
TestModel(3,"test3",false))
然后将列表复制到另一个对象中
val list2=list
当我修改列表时,例如:
list2[0].isPlaying=true
如果我检查这两个列表的相等性
print(list==list2)
修改list中的数据时结果为真
我在 Android ListAdapter 中使用此列表,虽然列表与旧列表相同,但适配器无法理解我已经做了一些修改。
我怎样才能实现我想要的? 感谢您的回复
【问题讨论】:
-
你想检查哪个类的属性?仅在播放中。
-
不,我想检查整个列表。事实上我的问题不是检查清单。 android列表适配器在提交新列表时不接受相同的列表,而对象的一个属性可能已更改。问题是 list1 等于 list2 而 list2 有一个索引,它的属性之一已更改
-
这里
val list2 = list复制的是引用,而不是列表,list2[0].isPlaying = true之后的变量list[0].isPlaying也将是true,因为它是同一个列表(对象)。并且适配器不会观察到您列表中的变化,您应该使用notifyDataSetChanged() -
@IR42 没有手动
notiftdatasetchange()就没有办法做到这一点?
标签: android kotlin android-recyclerview listadapter