[英]Remember LazyColumn Scroll Position - Jetpack Compose
[英]Remember scroll position in lazycolumn?
我知道记住惰性列表 state 并且工作正常
setContent {
Test(myList) // Call Test with a dummy list
}
@Composable
fun Test(data: List<Int>){
val state = rememberLazyListState()
LazyColumn(state = state) {
items(data){ item ->Text("$item")}
}
}
它会记住滚动 position 并且在每次旋转和更改配置后都会相同
但是每当我尝试从数据库中捕获数据并使用诸如collectAsState之类的方法时
它不起作用,这似乎是一个问题
setContent{
val myList by viewModel.getList.collectAsState(initial = listOf())
Test(myList)
}
不幸的是,目前还没有本地方法可以做到这一点,但您可以使用以下代码:
val listState = rememberLazyListState()
listState
有 3 个方法:
firstVisibleItemIndex
firstVisibleItemScrollOffset
isScrollInProgress
它们都是State()
,因此您将始终在数据更新时获得数据。 例如,如果您开始滚动列表, isScrollInProgress
将从false
变为true
。
保存并恢复 STATE
val listState: LazyListState = rememberLazyListState(viewModel.index, viewModel.offset)
LaunchedEffect(key1 = listState.isScrollInProgress) {
if (!listState.isScrollInProgress) {
viewModel.index = listState.firstVisibleItemIndex
viewModel.offset = listState.firstVisibleItemScrollOffset
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.