ページの一番下までスクロールしRecyclerViewは.addOnScrollListenerのcanScrollVerticallyをトリガしません。

デビッド秒。

私は自分の垂直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にリクエストを作るスキップボタンのシナリオのための最高のソリューションです。

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=17093&siteId=1