5
votes

La bibliothèque de pagination lorsqu'elle est utilisée dans une vue de défilement imbriquée charge toutes les données

J'utilise la bibliothèque de pagination pour charger des données et remplir ma vue de recyclage qui est placée dans une vue de défilement imbriquée. Mais c'est comme si la pagination fonctionne automatiquement jusqu'à ce que toutes les données soient extraites de l'API. Je sais que c'est à cause du nestedscrollview. Mais malheureusement, ma mise en page a besoin de scrollview car j'ai une section supérieure autre que recyclerview dans ce fragment. Ceci est ma mise en page

<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>

Tout fonctionne bien quand je n'utilise pas nestedscrollview. Il y a un problème ouvert dans googlesamples git repo qui enregistre ce problème.

https://github.com/googlesamples/android-architecture-components/issues/215

Quelqu'un a-t-il une idée de la façon dont nous pouvons implémenter la pagination lorsqu'une vue de recyclage se trouve dans une vue de défilement avec une bibliothèque de pagination depuis Android jetpack. Je sais que nous pouvons implémenter un type traditionnel de pagination attachant l'auditeur à nestedscrollview, mais je cherche à implémenter la pagination avec la bibliothèque de composants d'architecture. https://developer.android.com/topic/libraries/architecture/paging/ a>


0 commentaires

4 Réponses :


1
votes

Le problème est recyclerview à l'intérieur de nestedscrollview. La bibliothèque de pagination n'a rien à voir avec cela. Le comportement serait le même si vous essayez de charger des données sur l'écouteur de défilement de recyclerview.


1 commentaires

avez-vous la solution?



0
votes

La bibliothèque de pagination ne fonctionne pas correctement avec nestedScroolView. Vous devez donc changer votre NesteScrollView en ScroolView avec android: nestedScrollingEnabled = "true" , quelque chose comme ceci:

<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>


0 commentaires

1
votes

L'utilisation du code ci-dessous résoudra le problème. Voici la hiérarchie des vues:

<androidx.coordinatorlayout.widget.CoordinatorLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <com.google.android.material.appbar.AppBarLayout
        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 recyclerview -->

            </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>


0 commentaires

0
votes

utiliser recyclerview avec en-tête et pied de page au lieu de scrollview


0 commentaires