Java 使用NestedScrollView进行真正的慢速分页

Java 使用NestedScrollView进行真正的慢速分页,java,android,Java,Android,在我的应用程序中,我在NestedScrollView中使用RecyclerView,并且用它实现分页。我在下面附上一段代码,用于实现带分页的嵌套滚动视图 我有一个大的没有数据附加到recyclerview,因此,这个数据需要大量的时间附加,这会影响列表的平滑滚动 我只有一个recylerview,它有简单的滚动问题,不平滑,但分页仍然可以正常工作。我将我的recyclerview插入nestedscrollview,滚动仅在第一页变得平滑。但是当调用分页时,滚动效果非常差 当页码增加时,滚动从

在我的应用程序中,我在NestedScrollView中使用RecyclerView,并且用它实现分页。我在下面附上一段代码,用于实现带分页的嵌套滚动视图

我有一个大的没有数据附加到recyclerview,因此,这个数据需要大量的时间附加,这会影响列表的平滑滚动

我只有一个recylerview,它有简单的滚动问题,不平滑,但分页仍然可以正常工作。我将我的recyclerview插入nestedscrollview,滚动仅在第一页变得平滑。但是当调用分页时,滚动效果非常差

当页码增加时,滚动从坏到坏

让我展示一下用于嵌套视图滚动和分页的代码

home.xml:

              <android.support.v4.widget.NestedScrollView
                           android:id="@+id/nestedScroll"
                           android:layout_width="match_parent"
                           android:layout_height="match_parent">

                        <android.support.v7.widget.RecyclerView
                            android:id="@+id/recycler_view"
                            android:layout_width="match_parent"
                            android:layout_height="match_parent"
                            android:scrollbars="none" />

                    </android.support.v4.widget.NestedScrollView>
我想实现平滑滚动,即使适配器在将数据绑定到视图保持架时需要时间。但是当在适配器内设置数据时,滚动会变得非常慢

或者如果我遗漏了什么,请纠正我


提前感谢。

尝试在您的回收视图中设置:
rv.setNestedScrollingEnabled(false)

在设置适配器之前。

尝试在您的RecyclerView中设置:
rv.setNestedScrollingEnabled(false)

设置适配器之前。

如果不需要,请删除嵌套的滚动视图。并使用recyclerview实现分页首先,recyclerview很简单。我没有使用任何嵌套的scrollview,因此滚动没有那么好。但在实现嵌套滚动后,滚动是平滑的,但在将数据绑定到视图时会受到影响,因此需要时间。实际上,如果您在嵌套滚动视图中使用recycler视图,它将不会重复使用视图,也不会为您的计数创建视图。所以,当您更新项目的数据时,这将需要时间。可能是您的
onBind()
方法正在执行长时间运行的过程。那么你能把它和你的问题一起添加吗?是的,onBindViewHolder()正在做一些繁重的任务。我甚至还尝试将“notifyDataSetChanged()”放在另一个线程中。但没有成功。如果不需要,请删除嵌套的滚动视图。并使用recyclerview实现分页首先,recyclerview很简单。我没有使用任何嵌套的scrollview,因此滚动没有那么好。但在实现嵌套滚动后,滚动是平滑的,但在将数据绑定到视图时会受到影响,因此需要时间。实际上,如果您在嵌套滚动视图中使用recycler视图,它将不会重复使用视图,也不会为您的计数创建视图。所以,当您更新项目的数据时,这将需要时间。可能是您的
onBind()
方法正在执行长时间运行的过程。那么你能把它和你的问题一起添加吗?是的,onBindViewHolder()正在做一些繁重的任务。我甚至还尝试将“notifyDataSetChanged()”放在另一个线程中。但那没有成功,我已经做到了。除此之外,我还尝试了
ViewCompat.setNestedScrollingEnabled(homeRecyclerView,false)。但是没有成功,我已经成功了。除此之外,我还尝试了
ViewCompat.setNestedScrollingEnabled(homeRecyclerView,false)。但是没有任何成功。
@BindView(R.id.nestedScroll)
NestedScrollView nestedScroll;

private int currentPage = 0;

nestedScroll.getViewTreeObserver().addOnScrollChangedListener(new ViewTreeObserver.OnScrollChangedListener() {
            @Override
            public void onScrollChanged() {

                View view = (View) nestedScroll.getChildAt(nestedScroll.getChildCount() - 1);
                int diff = (view.getBottom() - (nestedScroll.getHeight() + nestedScroll.getScrollY()));

                if (diff == 0) {
                    if (blnCheckREsult == false) {
                        blnCheckREsult = true;
                        if (ConnectivityReceiver.isConnected()) {
                            currentPage++;
                            getHomeData(currentPage);

                        } else {
                            Toast.makeText(activity, "Please check your internet connection", Toast.LENGTH_SHORT).show();
                        }
                    }

                }

            }
        });