我在RecyclerView
内部的线性水平布局中有两个NestedScrollView
,一个是显示索引,另一个是显示数据(我知道我可以在一个RecyclerView
中完成此操作,但是我想启用仅拖放数据RecyclerView
而不是其他数据;这就是为什么我必须使用两个RecyclerView
的原因。现在,由于我希望它们一起滚动,因此将它们放置在NestedScrollView
内的线性水平布局中。现在,我需要获取RecyclerView
中第一个和最后一个可见项的位置。我该怎么办?
我曾尝试用NestedScrollView
代替ScrollView
,但随后两个RecyclerView
分别滚动了我不想要的。我还尝试将addOnScrollListener
添加到数据recyclerView
。但是它只返回0和List
的大小。
itemRecyclerView.addOnScrollListener(object : RecyclerView.OnScrollListener() {
override fun onScrolled(recyclerView: RecyclerView, dx: Int, dy: Int) {
super.onScrolled(recyclerView, dx, dy)
log("onScrolled")
val layoutManager = itemRecyclerView.layoutManager
if (layoutManager is LinearLayoutManager) {
log("First visible Item: " + layoutManager.findFirstVisibleItemPosition())
log("First complete visible Item: " + layoutManager.findFirstCompletelyVisibleItemPosition())
log("Last visible Item: " + layoutManager.findLastVisibleItemPosition())
log("Last complete visible Item: " + layoutManager.findLastCompletelyVisibleItemPosition())
}
}
尝试将val layoutManager = itemRecyclerView.layoutManager
更改为val layoutManager = recyclerView.layoutManager
。在这种情况下,您将确保获得设置了侦听器的RecyclerView的layoutManager。