Android 正在修改kotlin中列表的子对象,但列表等于未修改

Android 正在修改kotlin中列表的子对象,但列表等于未修改,android,kotlin,android-recyclerview,listadapter,Android,Kotlin,Android Recyclerview,Listadapter,我有一个这样的数据类 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",fals

我有一个这样的数据类

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))
修改列表时,例如:

list2[0].isPlaying=true
如果我检查这两个列表是否相等

print(list==list2)
修改
列表中的数据时,结果将为真

我在Android ListAdapter中使用这个列表,虽然列表和旧列表一样,但适配器不会理解我做了一些修改

我怎样才能实现我想要的?
感谢您的回复

在这种情况下,您还修改了原始列表的数据类。因此,如果打印两个列表,您将得到相同的结果:

列表:[TestModel(id=1,句子=test,isplay=true),TestModel(id=2, 语句=test2,isplay=false),TestModel(id=3,语句=test3, isPlaying=false)]

清单2:[TestModel(id=1,句子=test,isplay=true),TestModel(id=2,句子=test2,isplay=false),TestModel(id=3, 语句=test3,显示=false)]

您需要为每个数据类制作一个副本,以获得所需的结果,否则您将引用原始列表中的相同数据类,并且两者将具有相同的数据

为此,如果您想要或想做这些数据类的副本,可以使用此函数:

fun MutableList<TestModel>.copyOf(): MutableList<TestModel> {
    return this.map { it.copy() }.toMutableList()
}

希望这有帮助

要检查类的哪个属性?仅显示。不,我要检查整个列表。事实上,我的问题不是核对清单。android列表适配器在提交新列表时不接受相同的列表,而对象的一个属性可能已更改。问题是list1等于list2,而list2有一个索引,它的一个属性是changedhere
val list2=list
复制引用,而不是列表,在
list2[0]之后。isplay=true
变量
list[0]。isplay
也将是
true
,因为它是同一个列表(对象)。而且适配器没有观察到列表中的更改,您应该使用
notifyDataSetChanged()
@IR42如果不手动
notifyDataSetChange()
,是否有任何方法可以完成此操作?
fun MutableList<TestModel>.copyOf(): MutableList<TestModel> {
    return this.map { it.copy() }.toMutableList()
}
val list = mutableListOf(
    TestModel(1,"test",false),
    TestModel(2,"test2",false),
    TestModel(3,"test3",false)
)
val list2=list.copyOf()
list2[0].isPlaying=true
println(list==list2)