제가 쓰는 방법입니다.
public CustomAdapter(RecyclerView recycler) {
if(recycler.getLayoutManager() instanceof LinearLayoutManager) {
final LinearLayoutManager linearLayoutManager = (LinearLayoutManager) recycler.getLayoutManager();
recycler.addOnScrollListener(new RecyclerView.OnScrollListener() {
@Override
public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
super.onScrolled(recyclerView, dx, dy);
totalItemCount = linearLayoutManager.getItemCount();
lastVisibleItem = linearLayoutManager.findLastVisibleItemPosition();
if(!loading && totalItemCount <= (lastVisibleItem + visibleThreshold)) {
if(onLoadMoreListener != null) {
onLoadMoreListener.onLoadMore();
}
loading = true;
}
}
});
}
}
어댑터에서 위처럼 리스너를 등록하고
recyclerview가 위치한 액티비티에서
adapter.setOnLoadMoreListener(() -> {
// TODO
});
로 해야할 일을 작성하면 됩니다.
가장 아래부분은 visibleThreshold = 1로 하시면 됩니다.