【问题标题】: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()。