我有一个水平的Recyclerview,显示位图 . 它的实施方式是我在它下面有一个Imageview和一个Recyclerview . 当前选择的项目显示在图像视图中 . 所选图像视图的背景为蓝色,表示已选中 . 我可以从图库中选择图像,每次选择新图像时,我想滚动到最后一个位置并选择项目 .
图像列表保存在数组列表中,每次添加新图像时,我都会将图像添加到列表中并通知notifyDataChanged() .
目前,当我绑定视图时,我切换了蓝色背景的可见性
public void onBindViewHolder(final MyRecyclerViewHolder holder,int position){}
但问题是,如果孩子不在屏幕上,则不会调用绑定视图,我也不会滚动到新位置 . 我阅读了Recycler视图的文档,但无法弄清楚如何滚动到特定的子视图 . 我没有SmoothScrollTo方法,但我的问题是我在哪里触发它?
4 回答
有一个解决方案:
RecyclerView
适配器中,添加变量selectedItem
和方法setSelectedItem()
:onBindViewHolder(...)
中,添加:例如,您想要滚动到上一个位置并将其选中,只需:
[ UPDATE ]
要添加项目并将其选中,您应该在适配器中使用
addItem(...)
方法,这将添加项目到项目列表 . 添加项目后,刷新列表并滚动到新添加/最新项目:希望这有帮助!
在滚动到该项目之前,不会创建您的视图 .
你必须打电话
位置在哪里
所以该项目变得可见 .
使用RecyclerView LayoutManager在位置滚动项目
我忘了解决计时部分理想情况下应该在确定数据集更改的适配器时调用它 .
你可以用