gpt4 book ai didi

android - 使用导航组件保存 RecyclerView 的滚动

转载 作者:行者123 更新时间:2023-12-05 00:05:27 24 4
gpt4 key购买 nike

我在我的应用程序中使用带有 BottomNavigationView 的导航组件。它在 4 个目的地之间切换,其中一个目的地包含一个带有包含数百个项目的 RecyclerView 的 fragment 。当我使用后退按钮时,RecyclerView 会恢复到之前的滚动位置。但是当我使用 BottomNavigationView 在目的地之间切换时,它不会恢复到以前的位置并重置到 RecyclerView 的顶部。这是我试图阻止的代码

    override fun onPause() {
super.onPause()

lastScrollPos = linearLayoutManager.findFirstVisibleItemPosition()
}

override fun onResume() {
super.onResume()

card_recyclerView.layoutManager?.scrollToPosition(lastScrollPos)
}

这是行不通的,将 RecyclerView 恢复到正确位置的最佳方法是什么?

最佳答案

它不滚动到先前位置的原因是 navController 在与 bottomNavigation 一起使用时重新创建 fragment (使用替换)。

保存滚动状态的一种简单方法是将layoutManager状态存储在onDestroyView中,并在onCreateView上恢复它,不像scrollToPosition这种方法当 NavController 重新创建 fragment 时,将滚动到确切位置

我在另一个线程中发布了完整代码 https://stackoverflow.com/a/66940957/2102794

关于android - 使用导航组件保存 RecyclerView 的滚动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59433897/

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