2016-07-15 3 views
1

J'ai une vue recycleur à l'intérieur d'un swipeRefresh chaque fois que j'essaie de faire défiler la méthode de rafraîchissement est appelée et la mise à jour est rafraîchie, mais je veux rafraîchir la mise en page seulement en faisant défiler vers le haut de l'écran. Quelqu'un a-t-il une réponse à cette question?comment actualiser la mise en page dans le balayage pour actualiser Android

Toute aide est appréciée, Merci

Ma mise en page est comme indiqué ci-dessous.

<android.support.v4.widget.SwipeRefreshLayout 
    android:id="@+id/swipe_container" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content"> 

    <RelativeLayout 
     android:id="@+id/rel" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent"> 

     <android.support.v7.widget.Toolbar 
      android:id="@+id/toolbar" 
      android:layout_width="match_parent" 
      android:layout_height="?attr/actionBarSize" 
      app:layout_collapseMode="pin" 
      app:popupTheme="@style/ThemeOverlay.AppCompat.Light" /> 

     <android.support.v7.widget.RecyclerView 
      android:id="@+id/recycler" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:layout_below="@id/toolbar" 
      android:scrollbars="vertical" /> 
    </RelativeLayout> 

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

+0

Pourquoi est-il un '' RelativeLayout' entre le RecyclerView' et la 'SwipeRefreshLayout'? Le 'SwipeRefreshLayout' ne devrait-il pas être le parent direct de' RecyclerView'? voir https://developer.android.com/training/swipe/add-swipe-interface.html – frozenkoi

Répondre

2

Je résolu mon problème. J'ai dû réorganiser mon code pour le faire fonctionner. Maintenant, le lyout se rafraîchit en atteignant le haut de l'écran.

<RelativeLayout 
    android:id="@+id/rel" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

    <android.support.v7.widget.Toolbar 
     android:id="@+id/toolbar" 
     android:layout_width="match_parent" 
     android:layout_height="?attr/actionBarSize" 
     app:layout_collapseMode="pin" 
     app:popupTheme="@style/ThemeOverlay.AppCompat.Light" /> 

    <android.support.v4.widget.SwipeRefreshLayout 
     android:id="@+id/swipe_container" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_below="@id/toolbar"> 

     <android.support.v7.widget.RecyclerView 
      android:id="@+id/recycler" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:layout_below="@id/swipe_container" 
      android:scrollbars="vertical" /> 

    </android.support.v4.widget.SwipeRefreshLayout> 
</RelativeLayout> 
1

Utilisez la méthode setOnRefreshListener de SwipeRefreshLayout

upload_swipe_refresh_layout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() { 
     @Override 
     public void onRefresh() { 

      webServiceCall(); 
      upload_swipe_refresh_layout.setRefreshing(false); 
     } 
    }); 

Pour garder rafraîchissant

upload_swipe_refresh_layout.post(new Runnable() { 
    @Override 
    public void run() { 
     upload_swipe_refresh_layout.setRefreshing(true); 
    } 
}); 
+0

J'utilise setOnRefreshListener, mais le problème est appelé à chaque fois que j'essaie de faire défiler vers le haut. alors que je veux rafraîchir en atteignant le haut de l'écran. –

+0

alors vous pouvez le garder rafraîchissant tout le temps –

+0

J'ai édité ma réponse –