デビッド秒。:
私は自分の垂直recyclerviewでスキップ機能を実装しようとしています。ユーザーがボタンをクリックすると、recyclerViewはずっと一番下までスクロールし、API呼び出しをトリガーします。今、ユーザは、画面の一番下にあるかどうかを確認するために、私は使用しています.addOnScrollListener
私のrecyclerviewに。
mGridRecycler.addOnScrollListener(new RecyclerView.OnScrollListener() {
@Override
public void onScrollStateChanged(@NonNull RecyclerView recyclerView, int newState) {
super.onScrollStateChanged(recyclerView, newState);
//SCROLL_STATE_IDE prevents repeated calls from happening
// when near bottom of screen and slightly scroll up a bit
if(!mGridRecycler.canScrollVertically(1) && newState==RecyclerView.SCROLL_STATE_IDLE){
Log.d(TAG, "onScrollStateChanged: CALLED WTF");
mActivity.getNextPageGridView();
}
}
});
そして、最後の項目までスキップ機能を実装するために、私はボタンでこのメソッドを使用しています:
mGridRecycler.scrollToPosition(mList.size() - 1);
それはので、APIの呼び出しがトリガされていないが、最後の項目にスキップif-statement
呼び出されません。誰もが、私はそれが正常に動作させることができるか知っていますか?
チーク:
RecyclerViewはLayoutManagerでスクロールを処理する方法を知りません。
あなただけの呼び出しを受け取りますonScrolled
場合は最初とか、最後のあなたが得るつもりじゃない、子供の位置をレイアウトした後に変更するonScrollStateChanged
コールバックを。
あなたは何をするべきか?
別の方法としては、使用することができるsmoothScrollToPosition(..)
方法、またはオーバーライドonScrolled
メソッドを、OR右後にAPIにリクエストを作るスキップボタンのシナリオのための最高のソリューションです。