所以我正在更新我的RecylerView
with StateFlow<List>
像下面这样:
我的数据类:
data class Student(val name: String, var isSelected: Boolean)
我的视图模型逻辑:
fun updateStudentsOnSelectionChanged(targetStudent: Student) {
val targetIndex = _students.value.indexOf(targetStudent)
val isSelected = !targetStudent.isSelected
_students.value[targetIndex].isSelected = isSelected //<- doesn't work
}
Problem:UI没变,只是isSelected
inside _student
变了,怎么回事? (和...一样LiveData
)
我假设_students
is a StateFlow<List>
。改变isSelected
的财产Student
模型不会触发StateFlow
。解决方法是使isSelected
的财产Student
数据类不可变,以便在设置新状态时对其进行比较,创建一个MutableList
从当前列表中删除并复制现有的Student
具有新值的对象isSelected
财产:
data class Student(val name: String, val isSelected: Boolean)
val students = _students.value.toMutableList()
students[targetIndex] = students[targetIndex].copy(isSelected = isSelected)
_students.value = students
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)