1

recyclerview でエンドレス スクロールを実装しようとしていますが、正常に動作します。しかし、コンテンツのサイズが画面の高さよりも小さい場合、onScrolled が呼び出されないことに気付きました。下にスクロールするときにもっとロードしたいのですが、onScrolled が呼び出されないため、下にスクロールするジェスチャを検出できず、dy 値を取得できません。私は考えていた:

1) この場合、スクロール方向を取得するにはどうすればよいですか? 2) このような状況でのベスト プラクティスは何ですか? サービス呼び出しごとに設定された数のアイテムを取得しています。返されたアイテムの数が画面いっぱいにならない場合はどうなりますか?

recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener()
        {
            int lastVisibleItemPosition, visibleItemCount, totalItemCount;

            @Override
            public void onScrolled(RecyclerView recyclerView, int dx, int dy)
            {
                super.onScrolled(recyclerView, dx, dy);

                if(dy>0)
                {
                    visibleItemCount = recyclerLayoutManager.getChildCount();
                    totalItemCount = recyclerLayoutManager.getItemCount();
                    lastVisibleItemPosition = recyclerLayoutManager.findLastVisibleItemPosition();


                    if (lastVisibleItemPosition >= totalItemCount)
                    {

                        if (!loading && dy>0 && moreToload)
                        {
                            loadMore();
                        }                      
                    }
                }

            }
});

ありがとう!

4

4 に答える 4