如果它位于NestedScrollView内,如何获取recyclerView中第一个和最后一个可见项目的位置?

问题描述 投票:1回答:1

我在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())
    }
}
android kotlin android-recyclerview android-nestedscrollview
1个回答
0
投票

尝试将val layoutManager = itemRecyclerView.layoutManager更改为val layoutManager = recyclerView.layoutManager。在这种情况下,您将确保获得设置了侦听器的RecyclerView的layoutManager。

© www.soinside.com 2019 - 2024. All rights reserved.