如何找出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中的可见项目?的主要内容,如果未能解决你的问题,请参考以下文章