分页不适用于NestedScrollView

时间:2017-10-09 04:13:59

标签: android pagination android-recyclerview android-nestedscrollview

如何实施recyclerviewNestedScrollView的分页?

3 个答案:

答案 0 :(得分:33)

请按照以下步骤操作:

<强> 1。将嵌套滚动设置为启用回收器视图的错误。

recyclerView.setNestedScrollingEnabled(false);

<强> 2。将滚动列表器添加到嵌套的scrollview。

 mScrollView.getViewTreeObserver().addOnScrollChangedListener(new ViewTreeObserver.OnScrollChangedListener() {
           @Override
           public void onScrollChanged()
           {
                    View view = (View)mScrollView.getChildAt(mScrollView.getChildCount() - 1);

                    int diff = (view.getBottom() - (mScrollView.getHeight() + mScrollView
                                    .getScrollY()));

                    if (diff == 0) {
                       // your pagination code
                    }
           }
  });

答案 1 :(得分:0)

我可以在OnScrollChangeListener中获得解决方案设置nestedScrollView

每次加载项目时都应更改字段isLoading,例如,如果您使用的是改造。您可以在开始运行之前将其设置为true,并在获得falseresponse时将其设置为failure

每次获得商品并检查该页面是否为最后一页时,都应更改isLastPage字段。

我正在使用Kotlin。

private var isLoading = false

private var isLastPage = false

nestedScrollView.setOnScrollChangeListener { v: NestedScrollView?, scrollX: Int, scrollY: Int, oldScrollX: Int, oldScrollY: Int ->

            val nestedScrollView = checkNotNull(v){
                return@setOnScrollChangeListener
            }

            val lastChild = nestedScrollView.getChildAt(nestedScrollView.childCount - 1)

            if (lastChild != null) {

                if ((scrollY >= (lastChild.measuredHeight - nestedScrollView.measuredHeight)) && scrollY > oldScrollY && !isLoading && !isLastPage) {

                    //get more items
                }
            }
        }

当然,您需要将字段isNestedScrollingEnabled设置为false

myRecyclerView.isNestedScrollingEnabled = false

答案 2 :(得分:0)

我遇到了同样的问题,并且基于 Android 文档:

<块引用>

永远不要将 RecyclerView 或 ListView 添加到滚动视图。这样做 导致用户界面性能不佳和用户体验不佳。

我使用波纹管代码解决了我的问题:

value={this.state.value}