В сочинении, зачем изменять свойства элемента List, LazyColumn не обновляется
Когда я изменяю свойства объектов в списке, пользовательский интерфейс не обновляется
мой код:
@OptIn(ExperimentalFoundationApi::class)
@Composable
fun ContactCard(
) {
var stateList = remember {
mutableStateListOf<ListViewData>()
}
viewModel!!.recordRespListLiveData!!.observe(this) { it ->
it.forEach {
stateList.add(ListViewData(false, it))
}
}
LazyColumn() {
stateList.forEachIndexed { index, bean ->
stickyHeader() {
Box(Modifier.clickable {
stateList[index].visible = true
}) {
ContactNameCard(bean.data.contact, index)
}
}
items(bean.data.records) { data ->
if (bean.visible) {
RecordItemCard(record = data)
}
}
}
}
}
Когда я нажимаю на поле, для параметра visible устанавливается значение true, но RecordItemCard не отображается, почему?
1 ответ
Чтобы сработал SnapshotList, вам нужно добавить, удалить или обновить существующий элемент новым экземпляром. В настоящее время вы обновляете видимое свойство существующего элемента.
ЕслиListViewData
это экземпляр из класса данных, вы можете сделать это как
stateList[index] = stateList[index].copy(visible = true)