I'm trying to implement a recyclerview and when the last item is visible, I have to make a new request several times, but I cannot find out how can I find out if the last item is visible. Any suggestions?
Asked
Active
Viewed 425 times
0
-
A valid solution: https://stackoverflow.com/a/62361793/7210237 `LinearLayoutManager` and similar layout managers have `findFirstVisibleItemPosition()` and `findLastVisibleItemPosition()` methods you can from `onScrolled` method of `RecyclerView.OnScrollListener` . – Jenea Vranceanu Jul 09 '20 at 15:50
1 Answers
0
To find out when the last item is visible you should implement RecylerView.OnScrollListener
and every time list is scrolled query position of the last visible item on screen:
Kotlin
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
}
}
})
Use findLastCompletelyVisibleItemPosition()
instead of findLastVisibleItemPosition()
if you need to check when the last item is completely visible.

Jenea Vranceanu
- 4,530
- 2
- 18
- 34