gpt4 book ai didi

android - 在嵌套的 RecyclerView 中保存滚动状态

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:44:42 29 4
gpt4 key购买 nike

我的申请有问题。我有主列表(回收站 View )。此列表保留 20 个水平回收器 View 。它看起来非常像 Netflix 应用程序。我需要保留主列表中每个“旋转木马”的状态。如果我将第一个项目向右移动,向左移动,向下滚动(第一个和第二个项目被回收),旋转屏幕,向上滚动,我需要恢复第一个和第二个元素的位置。

我知道我应该使用 linearLayout.saveOnInstanceState 和 onRestoreState 但我的问题是每个轮播都在主列表中。

AndroidManifest.xml 中的

configChanges 无法发挥作用...

谢谢!

最佳答案

正如@Ixx 提到的,scrollX 始终为 0。您必须使用 layoutManager 来保存和恢复滚动位置

 val scrollStates = mutableMapOf<Int, Parcelable?>()
override fun onViewRecycled(holder: VH) {
super.onViewRecycled(holder)

val key = holder.layoutPosition
scrollStates[key] = holder.childRecycler.layoutManager.onSaveInstanceState()
}

override fun onBindViewHolder(holder: VH, position: Int) {
val key = holder.layoutPosition
val state = scrollStates[key]
if(state != null){
holder.childRecycler.layoutManager.onRestoreInstanceState(state)
}else{

holder.childRecycler.layoutManager.scrollToPosition(0)
}
}

关于android - 在嵌套的 RecyclerView 中保存滚动状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43480084/

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