В сочинении, зачем изменять свойства элемента 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)
Другие вопросы по тегам