SMR*_*SMR 0 android android-viewmodel android-jetpack-compose android-jetpack-compose-lazy-column
我在 jetpack compose 中创建了一个 LazyRow。在视图模型中的某个点,我想从该 LazyRow 获取当前可见项目的列表。我知道我可以使用以下代码获取 Composable 函数中可见项目的列表:
val listState = rememberLazyListState()
val visibleItemIds = remember {
derivedStateOf { listState.layoutInfo.visibleItemsInfo.map { it.key.toString() } }
}
Run Code Online (Sandbox Code Playgroud)
问题是如何在视图模型事件期间将此数据传递到视图模型(而不是单击按钮等)
您可以添加副作用来随时了解哪些可见项目。
LaunchedEffect(visibleItemIds){
//update your viewModel
}
Run Code Online (Sandbox Code Playgroud)
您还可以在代码中使用 aList<T>代替as:State<List<String>>
val state = rememberLazyListState()
val visibleItemIds: List<Int> by remember {
derivedStateOf {
val layoutInfo = state.layoutInfo
val visibleItemsInfo = layoutInfo.visibleItemsInfo
if (visibleItemsInfo.isEmpty()) {
emptyList()
} else {
visibleItemsInfo.map { it.index }
}
}
}
Run Code Online (Sandbox Code Playgroud)
另请注意,visibleItemsInfo还返回部分可见的项目。
| 归档时间: |
|
| 查看次数: |
639 次 |
| 最近记录: |