2017-08-06 1 views
2

J'utilise recyclerview dans un nestedscrollview comme suit:recyclerview intérieur nestedscrollview addOnScrollListener (de scrolllistener sans fin)

<?xml version="1.0" encoding="utf-8"?> 
<android.support.v4.widget.NestedScrollView 
    android:id="@+id/mainScrollView" 
    android:layout_marginBottom="?attr/actionBarSize" 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

<LinearLayout 
    android:layout_width="match_parent" 
    android:orientation="vertical" 
    android:layout_height="match_parent"> 

    <android.support.v4.view.ViewPager 
     android:id="@+id/pager" 
     android:layout_width="fill_parent" 
     android:overScrollMode="never" 
     android:layout_height="250dp" 
     android:focusableInTouchMode="true"/> 

    <android.support.v7.widget.RecyclerView 
     android:id="@+id/VerticalRV" 
     android:layout_weight="1" 
     android:layout_width="match_parent" 
     android:layout_height="0dp"/> 

</LinearLayout> 

</android.support.v4.widget.NestedScrollView> 

Le problème est que quand je veux mettre un écouteur (onScrollListener) à ce point de vue recycleur, il ne Travaillez quand même. J'ai également débogué ce morceau de code, mais il n'attrape même pas l'événement. Voici le code java:

recyclerView.setNestedScrollingEnabled(false); 
recyclerView.setHasFixedSize(true); 
recyclerView.setLayoutManager(layoutManager); 
MyAdapter adapter = new MyAdapter(verticalShownData, this.getActivity()); 
recyclerView.setAdapter(adapter); 

recyclerView.addOnScrollListener(new HideShowScrollListener() { 
    @Override 
    public void onHide() { 
      animateCallback.animateHide(); 
    } 

    @Override 
    public void onShow() { 
      animateCallback.animateShow(); 
    } 
}); 

Comment puis-je faire fonctionner cet auditeur? Merci d'avance.

+0

mettre view pager dans une barre de menus collapsingtoolout dans l'appbar, supprimer nestedscrollview et ajouter ce drapeau à recycler voir l'application: layout_behavior = "@ chaîne/appbar_scrolling_view_behavior" – uguboz

+0

Je n'utilise pas appbar comme vous pouvez le voir dans le code. De toute façon, pourriez-vous s'il vous plaît fournir quelques codes pour me donner un indice? @uguboz –

+0

Je n'ai pas installé de studio Android maintenant, mais vous pouvez suivre https://antonioleiva.com/collapsing-toolbar-layout/ tutoriel pour atteindre le même résultat. – uguboz

Répondre

0

Après quelques jours, j'ai finalement trouvé une solution.

La solution supprime le NestedScrollView et utilise à la place RecyclerView avec en-tête. Donc, le premier élément du RecyclerView est un ViewPager et le reste est d'autres objets.

Je pense qu'utiliser NestedScrollView comme parent de RecyclerView n'est pas une bonne pratique. Depuis NestedScrollView force son enfant à être entièrement chargé et cela est contre le concept de RecyclerView.

La solution est inspirée de la réponse de @ hister au this thread.