我在回收器视图中有一个元素列表,这些元素是使用数据绑定动态生成的。每个元素都有一个初始设置为View.GONE的底部视图,但是,一旦用户单击该元素并扩展了该视图,回收者视图就会自动滚动回到列表的顶部。相反,如果视图被展开,然后再次单击以折叠,则回收者视图将再次滚动到列表顶部。我尝试跟踪适配器元素的ID(再次使用数据绑定),在子元素展开或折叠时将焦点设置到子元素,并使用绑定适配器为扩展/折叠本身设置动画。
我的怀疑是,当一个孩子的身高发生变化时,回收者视图中的适配器正在收到onNotifyDataChanged()
警报,从而呈现一个附加视图(尽管仍在其中一个孩子内,而不是其中一个单独的孩子)列表),并自动滚动到顶部。有没有办法覆盖这个?有谁知道单击元素之一->展开/折叠时,其他原因可能导致列表跳到顶部?
答案 0 :(得分:0)
因此,在有人遇到类似问题时,我找到了解决问题的方法。我实际上最终找到了这个答案:RecyclerView notifyDataSetChanged scrolls to top position
和涉及交错布局管理器的第二个解决方案是我选择的路线,因为我希望能够包装内容。我的怀疑是正确的,这与回收者视图中元素的高度变化有关。可扩展项目的父包装内容,因此,一旦可扩展部分出现/消失,回收站视图就被迫重新计算项目的大小(至少这是我所得到的)。