我正在使用分页库加载数据并填充我的回收视图,该视图位于嵌套的crollview中。但就像,分页是自动工作的,直到所有数据从API获取。我知道这是因为嵌套的crollview。但不幸的是,我的布局需要滚动视图,因为我在这个片段中有一个顶部而不是recycleview。这是我的布局
<android.support.v4.widget.NestedScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fillViewport="true"
>
<android.support.constraint.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
//have a layout here which scrolls with recyclerview
<Recyclerview />
</ConstraintLayout>
</NestedScrollView>
当我不使用nestedscrollview时,一切都很好。谷歌样本git-reo规则中存在一个悬而未决的问题。
https://github.com/googlesamples/android-architecture-components/issues/215
有人知道当回收视图在带有Android jetpack分页库的滚动视图中时,我们如何实现分页吗。我知道我们可以实现传统的分页,将监听器附加到nestedscrollview,但我希望使用架构组件库来实现分页。https://developer.android.com/topic/libraries/architecture/paging/
使用以下代码将解决此问题。以下是视图层次结构:
<androidx.coordinatorlayout.widget.CoordinatorLayout
android:id="@+id/coordinator_layout"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<com.google.android.material.appbar.AppBarLayout
android:id="@+id/appbar_layout"
android:background="@color/white"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<com.google.android.material.appbar.CollapsingToolbarLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_scrollFlags="scroll|exitUntilCollapsed"
app:titleEnabled="false">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<!-- Put here elements that you need above the recycler view -->
</LinearLayout>
</com.google.android.material.appbar.CollapsingToolbarLayout>
</com.google.android.material.appbar.AppBarLayout>
<!-- RecyclerView -->
<androidx.recyclerview.widget.RecyclerView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:nestedScrollingEnabled="true"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
android:scrollbars="vertical"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager" />
</androidx.coordinatorlayout.widget.CoordinatorLayout>
注意:请确保您已经为CoordinaterLayout和AppBarLayout指定了id,以便它在后堆栈上保留滚动位置。
问题是嵌套scrolview中的recyclerview。分页库与此无关。如果您尝试在recyclerview的滚动侦听器上加载数据,则行为将是相同的。
分页库不能很好地与nestedScroolView配合使用。因此,您必须使用android:nestedScrollingEnabled="true"
将NesteScrollView更改为ScrollView,类似于以下内容:
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:nestedScrollingEnabled="true"
>
<android.support.constraint.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
//have a layout here which scrolls with recyclerview
<Recyclerview />
</ConstraintLayout>
</ScrollView>