我有RecyclerView,其中包含50个项目。我将使用遥控器上下按钮逐个导航。要选择任何项目(例如25日)我正在使用recyclerview.scrollToPosition(position)
方法。在此选择之后,该项目将自动移动到列表的顶部位置。我不希望我所选择的项目位于该位置的顶部。我想成为同一个选定的职位。我该如何实现这一目标?
谢谢, K. Rajesh
答案 0 :(得分:1)
如果您使用的是向上和向下控制,则与ViewHolder
的实际RecyclerView
分开,您可以使用RecyclerView.scrollBy(x, y)
。
假设您的所有项目大小相同,您甚至不必考虑“选定项目”索引,因为项目高度不可能有变化。只需在第一个位置使用View,然后在每个向上或向下按钮单击时滚动正高度或负高度。
如果您使用LinearLayoutManager
或GridLayoutManager
,Kotlin中的部分示例会如下所示:
view.findViewById<Button>(R.id.up).setOnClickListener {
val temp = recyclerView.layoutManager.findViewByPosition((recyclerView.layoutManager as LinearLayoutManager).findFirstCompletelyVisibleItemPosition())
temp?.let {
recyclerView?.scrollBy(0, -it.height)
}
}
view.findViewById<Button>(R.id.down).setOnClickListener {
val temp = recyclerView.layoutManager.findViewByPosition((recyclerView.layoutManager as LinearLayoutManager).findFirstCompletelyVisibleItemPosition())
temp?.let {
recyclerView?.scrollBy(0, it.height)
}
}
另请注意,如果您将ItemDecoration
添加到RecyclerView
,则需要在执行滚动时考虑这些额外的间距。