gpt4 book ai didi

android - 还记得lazycolumn 中的滚动位置吗?

转载 作者:行者123 更新时间:2023-12-04 23:38:27 29 4
gpt4 key购买 nike

我知道记住惰性列表状态,它工作正常

 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")}
}
}
它将记住滚动位置,并且在每次旋转和更改配置后都会保持相同
但是每当我尝试从数据库中捕获数据并使用诸如collectAsState之类的方法时
它不起作用,这似乎是一个问题
   setContent{
val myList by viewModel.getList.collectAsState(initial = listOf())
Test(myList)
}

最佳答案

不幸的是,目前还没有本地方法可以做到这一点,但您可以使用以下代码:

val listState = rememberLazyListState()
listState有3种方法:
  • firstVisibleItemIndex
  • firstVisibleItemScrollOffset
  • isScrollInProgress

  • 都是 State()因此,您将始终在数据更新时获得数据。例如,如果您开始滚动列表, isScrollInProgress将从 false 更改至 true .
    保存和恢复状态
    val listState: LazyListState = rememberLazyListState(viewModel.index, viewModel.offset)

    LaunchedEffect(key1 = listState.isScrollInProgress) {
    if (!listState.isScrollInProgress) {
    viewModel.index = listState.firstVisibleItemIndex
    viewModel.offset = listState.firstVisibleItemScrollOffset
    }
    }

    关于android - 还记得lazycolumn 中的滚动位置吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67641734/

    29 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com