【发布时间】:2022-01-01 08:58:17
【问题描述】:
我有一个项目列表,其中每个项目都有一个复选框。复选框的状态需要存储在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
}
)
}
)
}
}
}
}
我尝试通过更新onCheckedChange 回调中的列表(viewmodel 中的MutableLiveData<List<Object>>)来更新item.selected,但UI 没有更新。如果我向下滚动然后向上滚动 UI 更新并且复选框似乎被选中。为什么不更新?
【问题讨论】:
标签: android-jetpack-compose android-livedata android-jetpack lazycolumn