我有一个项目列表,每个项目都有一个复选框。复选框的状态需要存储在 中viewmodel
,最好将 中的列表viewmodel
作为唯一的事实来源。
@Composable
fun Screen(viewModel: ViewModel) {
val list by viewModel.items.observeAsState()
LazyColumn {
list?.let { items ->
items(items) { item ->
ListItem(
text = {
Text(item.name)
},
secondaryText = {
Text(item.phoneNumber)
},
icon = {
Checkbox(
modifier = Modifier.padding(8.dp),
checked = item.selected,
onCheckedChange = {
//TODO
}
)
}
)
}
}
}
}
我试图item.selected
通过更新回调中的列表(MutableLiveData<List<Object>>
in viewmodel
)来更新onCheckedChange
,但 UI 没有更新。如果我向下滚动然后向上滚动 UI 更新并且复选框似乎被选中。为什么不更新?