data class TodoItem(val id: Int, val title: String, var urgent: Boolean = false)
val todoList = listOf(
TodoItem(0, "My First Task", true),
TodoItem(1, "My Second Task", true),
TodoItem(2, "My Third Task"),
)
@Composable
fun Greeting(name: String) {
val todoListState = remember {
todoList.toMutableStateList()
}
LazyColumn(modifier = Modifier.fillMaxHeight()) {
items(items = todoListState, itemContent = { item ->
Row(modifier = Modifier.fillMaxWidth(),
verticalAlignment = Alignment.CenterVertically
) {
Text(
modifier = Modifier.weight(1f).padding(8.dp),
text = item.title)
Checkbox(
checked = item.urgent,
onCheckedChange = {
val index = todoListState.indexOf(item)
todoListState[index] = todoListState[index].copy(urgent = it)
Log.d("Track", "$todoList")
}
)
}
})
}
}
< /code>
В первый раз, когда это < /p>
[TodoItem(id=0, title=My First Task, urgent=true),
TodoItem(id=1, title=My Second Task, urgent=true),
TodoItem(id=2, title=My Third Task, urgent=false)]
< /code>
после того, как я сначала обновился на false, тогда это false < /p>
[TodoItem(id=0, title=My First Task, urgent=false),
TodoItem(id=1, title=My Second Task, urgent=true),
TodoItem(id=2, title=My Third Task, urgent=false)]
< /code>
Когда я сначала обновляюсь, чтобы вернуть обратно, todoitem < /code> больше не изменяется и остается как
после того, как я сначала обновился на false, то это false < /p>
[TodoItem(id=0, title=My First Task, urgent=false),
TodoItem(id=1, title=My Second Task, urgent=true),
TodoItem(id=2, title=My Third Task, urgent=false)]
Я проверяю todoliststate (SnapshotStatelist), и он больше не синхронизируется с Todolist . Что это вызывает? Как это исправить? Checkbox(
checked = item.urgent,
onCheckedChange = {
val index = todoListState.indexOf(item)
todoListState[index] = todoListState[index].copy(urgent = it)
todoList[index].urgent = it
Log.d("Track", "$todoList")
}
)
< /code>
Но это означает, что я должен изменить 2 элемента одновременно. Как я могу просто изменить один и получить оба обновления?
У меня есть список Todo в Jetpack Compose, отображаемый в Lazycolumn. < /p> [code]data class TodoItem(val id: Int, val title: String, var urgent: Boolean = false)
val todoList = listOf( TodoItem(0, "My First Task", true), TodoItem(1, "My Second Task", true), TodoItem(2, "My Third Task"), )
@Composable fun Greeting(name: String) { val todoListState = remember { todoList.toMutableStateList() } LazyColumn(modifier = Modifier.fillMaxHeight()) { items(items = todoListState, itemContent = { item -> Row(modifier = Modifier.fillMaxWidth(), verticalAlignment = Alignment.CenterVertically ) { Text( modifier = Modifier.weight(1f).padding(8.dp), text = item.title) Checkbox( checked = item.urgent, onCheckedChange = { val index = todoListState.indexOf(item) todoListState[index] = todoListState[index].copy(urgent = it) Log.d("Track", "$todoList") } ) } }) } } < /code> В первый раз, когда это < /p> [TodoItem(id=0, title=My First Task, urgent=true), TodoItem(id=1, title=My Second Task, urgent=true), TodoItem(id=2, title=My Third Task, urgent=false)] < /code> после того, как я сначала обновился на false, тогда это false < /p> [TodoItem(id=0, title=My First Task, urgent=false), TodoItem(id=1, title=My Second Task, urgent=true), TodoItem(id=2, title=My Third Task, urgent=false)] < /code> Когда я сначала обновляюсь, чтобы вернуть обратно, todoitem < /code> больше не изменяется и остается как после того, как я сначала обновился на false, то это false < /p> [TodoItem(id=0, title=My First Task, urgent=false), TodoItem(id=1, title=My Second Task, urgent=true), TodoItem(id=2, title=My Third Task, urgent=false)] [/code] Я проверяю todoliststate (SnapshotStatelist), и он больше не синхронизируется с Todolist . Что это вызывает? Как это исправить? Checkbox( checked = item.urgent, onCheckedChange = { val index = todoListState.indexOf(item) todoListState[index] = todoListState[index].copy(urgent = it) todoList[index].urgent = it Log.d("Track", "$todoList") } ) < /code> Но это означает, что я должен изменить 2 элемента одновременно. Как я могу просто изменить один и получить оба обновления?