Amo*_*kar 5 android kotlin android-recyclerview
我在我的应用程序中使用带有 BottomNavigationView 的导航组件。它在 4 个目的地之间切换,其中一个目的地包含一个片段,其中 RecyclerView 包含数百个项目。当我使用后退按钮时,RecyclerView 会恢复到之前的滚动位置。但是当我使用 BottomNavigationView 在目的地之间切换时,它不会恢复到之前的位置并重置到 RecyclerView 的顶部。这是我试图防止这种情况的代码
override fun onPause() {
super.onPause()
lastScrollPos = linearLayoutManager.findFirstVisibleItemPosition()
}
override fun onResume() {
super.onResume()
card_recyclerView.layoutManager?.scrollToPosition(lastScrollPos)
}
Run Code Online (Sandbox Code Playgroud)
这不起作用将 RecyclerView 恢复到正确位置的最佳方法是什么?
小智 0
这可以通过将 的 Y 轴位置保存ScrollView在成员变量中并将其恢复到 中来完成onCreateView()。这是可行的,因为成员变量没有被破坏。
class DiscoverDataFragment : BaseFragment() {
private var loaded = false
private var scrollPos = 0
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
return inflater.inflate(R.layout.fragment_discover_data, container, false)
}
override fun onCreateBind() {
super.onCreateBind()
if (!loaded) {
// Load views here
loaded = true
}
if (scrollPos > 0) {
scrollDiscoverData.scrollY = scrollPos
}
setScrollListener()
}
private fun setScrollListener() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
scrollDiscoverData.setOnScrollChangeListener { v, scrollX, scrollY, oldScrollX, oldScrollY ->
scrollPos = scrollY
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2360 次 |
| 最近记录: |