課題
RecyclerViewでもオートスクロールを実現したい
対策
RecyclerView#addOnScrollListenerとLinearLayoutManager#findLastVisibleItemPositionを組み合わせる。
LinearLayoutManagerにはfindLastVisibleItemPositionという一部が見えている最後のアイテム位置を教えてくれるメソッドが存在する。これがアイテム数と一致した時点で最後にきたことが分かる。
位置情報は配列番号なのでアイテム数と一致させるには一方に1を足すなり引くなりする必要がある。
mRecyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() { @Override public void onScrolled(RecyclerView recyclerView, int dx, int dy) { super.onScrolled(recyclerView, dx, dy); if (mIsLoading || !mHasNext) { return; } LinearLayoutManager manager = (LinearLayoutManager)recyclerView.getLayoutManager(); int lastItemPosition = manager.findLastVisibleItemPosition(); if (lastItemPosition >= manager.getItemCount() -1) { mIsLoading = true; //TODO //追加のリクエスト } } @Override public void onScrollStateChanged(RecyclerView recyclerView, int newState) { super.onScrollStateChanged(recyclerView, newState); //do nothing } });