如何找出recyclerview中的可见项目?

Posted

技术标签:

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

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

【问题讨论】:

一个有效的解决方案:***.com/a/62361793/7210237LinearLayoutManager和类似的布局管理器有findFirstVisibleItemPosition()findLastVisibleItemPosition()方法你可以从onScrolled方法RecyclerView.OnScrollListener 【参考方案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()

【讨论】:

以上是关于如何找出recyclerview中的可见项目?的主要内容,如果未能解决你的问题,请参考以下文章

获取 RecyclerView 中的可见项目

如何更新/刷新 RecyclerView 中的特定项目

如何获取回收站当前可见项目位置

如何维护适配器类中recyclerview项目的可见性

如何获得 Recyclerview 项目中所有 Edittext 的总和?仅获取屏幕上可见的项目,而不是全部

如何将回收器高度设置为 recyclerView 中的最高项目?