kotlin 如何删除水平recyclerview(子)内的recyclerview(父)滚动到第一个位置时,notifyitemchange?

b4wnujal  于 2023-05-23  发布在  Kotlin
关注(0)|答案(1)|浏览(226)

我在recyclerview中使用了多视图类型。其中视图类型之一是水平方向的线性布局管理器的recyclerview。我加载了父recyclerview中的所有视图类型。当我更改位置10的horizontal recyclerview项中的某个项并通过adapter?.notifyItemChanged(10)进行更新时,horizontal recyclerview跳转到第一个位置0。这会带来糟糕的用户体验。
另外,我在父级和子级Recyclerview中使用了android:descendantFocusability="blocksDescendants"setHasFixedSize(true),但不起作用。有什么办法可以解决我的问题。并附上图片供参考

此处位置1为水平回收器视图

9jyewag0

9jyewag01#

您可以保存RecyclerView的布局示例并恢复后通知adapter,这将恢复布局管理器属性,如滚动位置。

val savedInstance = recyclerView.layoutManager?.onSaveInstanceState()
adapter?.notifyItemChanged(10)
recyclerView.layoutManager?.onRestoreInstanceState(savedInstance)

相关问题