MutableStateListOf не перестраивается при обновлении одного элементаAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 MutableStateListOf не перестраивается при обновлении одного элемента

Сообщение Anonymous »

У меня есть класс данных

Код: Выделить всё

data class Item(
val name: String,
var isSelected: Boolean,
)
У меня есть список с элементами

Код: Выделить всё

val itemStateList = mutableStateListOf()
У меня есть следующий LazyColumn

Код: Выделить всё

LazyColumn( modifier = Modifier.fillMaxWidth(), state = listState ) {

itemsIndexed(itemList, key = { _, item: Item -> item.hashCode() }) { index, item ->

val backgroundColor =
if (itemList[index].isSelected)
MaterialTheme.colorScheme.secondary
else
Color.Transparent

CustomCard(index, background)

}
}
и следующий метод в viewModel, который срабатывает каждый раз, когда я нажимаю на элемент в списке

Код: Выделить всё

fun setSelected(index: Int) {
itemStateList[index] = itemStateList[index].copy(isSelected = true)
}
Я знаю, что обновление isSelected само по себе не приведет к повторной композиции, но использование метода копирования, описанного выше, должно вызвать повторную композицию, но это не так. Как я могу заставить его работать так, чтобы при нажатии на один элемент перекомпоновывался только этот элемент на основе значения itemList[index].isSelected?

Подробнее здесь: https://stackoverflow.com/questions/785 ... ingle-item
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»