40

EndlessRecyclerViewの最後に がありますNestedScrollViewEndlessRecyclerViewつまり、ユーザーが recyclerView の一番下までスクロールすると、さらにデータが読み込まれます。これはすでに実装されており、他の場所で機能していますが、recyclerView をイベント内に配置するとNestedScrollViewOnScrollListenerイベントが発生しません。

XML 設計:

<NestedScrollView>

     <Other views/>

     <EndlessRecyclerView/>

</NestedScrollView >

コード:

recyclerView.setOnScrollListener(new RecyclerView.OnScrollListener() {
        @Override
        public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
            super.onScrolled(recyclerView, dx, dy);
            // This is never fired! Here is where I implement the logic of EndlessRecyclerView
        }
    });

上記の場合のスクロールイベントを取得するにはどうすればよいですか?

2 つのスクロール可能なビューを相互に配置するのは良くないことはわかっています。しかし、スクロール可能なビューを 2 つ持たずに上記のケースをどのように作成すればよいでしょうか?

私はすでにこのリンクをたどっていますが、うまくいきません: scrollview android 内の recyclerview のスクロールイベント

4

4 に答える 4

96

NestedScrollView の下にあるリサイクラー ビューの無限スクロールを実現するには、「NestedScrollView.OnScrollChangeListener」を使用できます。

nestedScrollView.setOnScrollChangeListener((NestedScrollView.OnScrollChangeListener) (v, scrollX, scrollY, oldScrollX, oldScrollY) -> {
            if(v.getChildAt(v.getChildCount() - 1) != null) {
                if ((scrollY >= (v.getChildAt(v.getChildCount() - 1).getMeasuredHeight() - v.getMeasuredHeight())) &&
                        scrollY > oldScrollY) {
                        //code to fetch more data for endless scrolling
                }
            }
        });

ここでv.getChildCount() -1は、エンドレス スクロールを実装するリサイクラー ビューが表示されます。

またscrollY > oldScrollY、ページが下にスクロールされていることを確認します。

参考:NestedScrollView.OnScrollChangeListener

于 2016-12-21T12:14:24.460 に答える