如何使用房间的流列表更新 lazyColumn 的项目?
How to update lazyColumn's item using the Flow list from room?
如下代码所示,我得到了 list
(type: FlowT>>),
如何使用它来更新 lazyColumn 的项目,以便当房间数据发生变化时,lazyColumn 会相应地更新项目?
非常感谢。
@Composable
fun SomeContent(context: Context) {
// get the view model ref
val viewModel: SomeViewModel =
viewModel(factory = SomeViewModelFactory(Db.getInstance(context)))
// get the list from room, it is a Flow list
val list = viewModel.sumDao.getAllRows()
LazyColumn(
) {
// I need to use the list in below, but got errors, how to do?
items(list.size) {
SomeListItem(list[it])
}
}
}
您必须按照以下方式收集您的 FlowList
val list = viewModel.sumDao.getAllRows().collectAsState(initial = emptyList())
使用 itemsIndexed 代替项目
itemsIndexed(list) {idx, row -> SomeListItem(row)}
让我知道以上是否有效。
如果使用 vn1gam 的解决方案,可能需要做
itemsIndexed(list.value) {idx, row -> SomeListItem(row)}
如下代码所示,我得到了 list
(type: FlowT>>),
如何使用它来更新 lazyColumn 的项目,以便当房间数据发生变化时,lazyColumn 会相应地更新项目?
非常感谢。
@Composable
fun SomeContent(context: Context) {
// get the view model ref
val viewModel: SomeViewModel =
viewModel(factory = SomeViewModelFactory(Db.getInstance(context)))
// get the list from room, it is a Flow list
val list = viewModel.sumDao.getAllRows()
LazyColumn(
) {
// I need to use the list in below, but got errors, how to do?
items(list.size) {
SomeListItem(list[it])
}
}
}
您必须按照以下方式收集您的 FlowList
val list = viewModel.sumDao.getAllRows().collectAsState(initial = emptyList())
使用 itemsIndexed 代替项目
itemsIndexed(list) {idx, row -> SomeListItem(row)}
让我知道以上是否有效。
如果使用 vn1gam 的解决方案,可能需要做
itemsIndexed(list.value) {idx, row -> SomeListItem(row)}