【问题标题】:Jetpack Compose LazyList Scroll PositionJetpack Compose LazyList 滚动位置
【发布时间】:2021-05-30 18:51:40
【问题描述】:

我有 LazyColumn,其中包含我从 viewmodel 收集的数据。问题是当我更改屏幕方向或导航到另一个可组合并返回时,我的可组合无法保存滚动状态。我不确定我是否正确使用了 rememberLazyListState。感谢任何帮助。

    @Composable
    fun UsersScreen(mainNavController: NavHostController, viewModel: UsersViewModel = hiltViewModel()) {
        val users = viewModel.users.collectAsState(listOf()).value
        val lazyListState = rememberLazyListState()
        Users(users, lazyListState, mainNavController)
    }
    
    @Composable
    fun Users(list: List<UserEntity>, listState: LazyListState, mainNavController: NavHostController) {
        LazyColumn(state = listState, modifier = Modifier.fillMaxSize()) {
            items(list) { user ->
                UserCard(user) {
                    mainNavController.navigate("$USER_DETAIL/${user.fullName}")
                }
            }
        }
    }

【问题讨论】:

  • 您在使用 Compose beta07 吗?这是b/188567661 中的一个已知问题,已针对 beta08 修复。
  • 是的,我使用的是 beta07 版本。由于 beta08 尚未发布,我尝试将其降级,但它给了我 IllegalStateException。看起来我必须等待,比很多。
  • 虽然如果您的列表由于方向更改而重新组合,这已修复,但如果列表使用 AnimatedVisibility 在屏幕外设置动画,这仍然是一个错误。它将跳转到列表的开头。

标签: android android-jetpack android-jetpack-compose


【解决方案1】:

在当前版本 beta08 中已修复。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-07-04
    • 1970-01-01
    • 2021-05-26
    • 1970-01-01
    • 2021-08-28
    • 2023-01-07
    • 2022-08-20
    • 1970-01-01
    相关资源
    最近更新 更多