Я думаю, вам нужно поиграть с параметрами offset
и limit
в вашем запросе. Например, вы можете увеличивать offset
на 20 в каждом запросе и устанавливать limit
на 20, начиная с offset
0 и увеличивая его каждый раз, когда достигается дно. Таким образом, каждый запрос должен вернуть следующие 20 предметов.
Взгляните сюда: https://developer.marvel.com/documentation/apiresults
Чтобы определить, когда достигнуто дно на RecyclerView
, вы можете использовать addOnScrollListener
что-то вроде этого:
private int firstVisibleItem, visibleItemCount, totalItemCount;
private boolean loading = true;
private int offset = 0;
recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
@Override
public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
super.onScrolled(recyclerView, dx, dy);
visibleItemCount = recyclerView.getChildCount();
totalItemCount = layoutManager.getItemCount();
firstVisibleItem = layoutManager.findFirstVisibleItemPosition();
if (loading) {
if (totalItemCount > previousTotal) {
loading = false;
previousTotal = totalItemCount;
}
}
if (!loading && (visibleItemCount + firstVisibleItem)
>= totalItemCount) {
// End has been reached
offset += 20;
// send request to load more videos here
loading = true;
}
}
});