【问题标题】:How to find out the visible item in recyclerview?如何找出recyclerview中的可见项目?
【发布时间】:2020-10-30 06:37:45
【问题描述】:

我正在尝试实现 recyclerview,当最后一个项目可见时,我必须多次发出新请求,但我不知道如何才能确定最后一个项目是否可见。有什么建议吗?

【问题讨论】:

  • 一个有效的解决方案:stackoverflow.com/a/62361793/7210237LinearLayoutManager和类似的布局管理器有findFirstVisibleItemPosition()findLastVisibleItemPosition()方法你可以从onScrolled方法RecyclerView.OnScrollListener

标签: android kotlin android-recyclerview scroll


【解决方案1】:

要找出最后一个项目何时可见,您应该实现RecylerView.OnScrollListener,并且每次滚动列表时查询屏幕上最后一个可见项目的位置:

科特林

recyclerView.addOnScrollListener(object: RecyclerView.OnScrollListener() {
    override fun onScrolled(recyclerView: RecyclerView, dx: Int, dy: Int) {
        super.onScrolled(recyclerView, dx, dy)
        val linearLayoutManager = recyclerView.layoutManager as LinearLayoutManager
        val lastVisiblePosition = linearLayoutManager.findLastVisibleItemPosition()
 
        if (lastVisiblePosition == dataList.size) {
            // perform network request
        }
    }
})

Java

recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
    @Override
    public void onScrolled(@NonNull RecyclerView recyclerView, int dx, int dy) {
        super.onScrolled(recyclerView, dx, dy);
        LinearLayoutManager linearLayoutManager = (LinearLayoutManager) recyclerView.getLayoutManager();
        int lastVisiblePosition = linearLayoutManager.findLastVisibleItemPosition();
        
        if (lastVisiblePosition == dataList.size()) {
           // perform network request
        }
    }
})

如果您需要检查最后一项何时完全可见,请使用 findLastCompletelyVisibleItemPosition() 而不是 findLastVisibleItemPosition()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-22
    • 1970-01-01
    相关资源
    最近更新 更多