2013-05-10 6 views

risposta

3

Appena aggiunto il supporto per StaggeredGridView a Chris Banes Android-PullToRefresh. Supporta anche Actionbar-PullToRefresh per ActionBarSherlock.

+0

Quella libreria PullToRefresh è stata dichiarata obsoleta ... Qualche soluzione per la nuova versione di Chris Banes? –

+0

Posta il collegamento della nuova versione. Ci cercherò. – Mihir

+0

https://github.com/chrisbanes/ActionBar-PullToRefresh Sono riuscito a farlo funzionare quando solo il primo elemento della lista è ancora visibile, ma che ancora non dà la migliore UX, quando si scorre verso il basso e il primo l'elemento è ancora visibile, non è possibile scorrere di nuovo verso l'alto perché verrà aggiornato. –

0

Racchiudere la vista griglia in SwipeRefreshLyout.

 <android.support.v4.widget.SwipeRefreshLayout 
     xmlns:android="http://schemas.android.com/apk/res/android" 
     android:id="@+id/swipeLayout" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent"> 

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

Aggiungi listener oncroll per il gridview in onViewCreated. Imposta le condizioni quando l'aggiornamento è abilitato.

swipeRefreshLayout = (SwipeRefreshLayout)findViewById(R.id.swipeLayout); 
    swipeRefreshLayout.setColorSchemeResources(R.color.theme_color); 
    swipeRefreshLayout.setOnRefreshListener(this); 
    gridView.setOnScrollListener(new AbsListView.OnScrollListener() { 
     @Override 
     public void onScrollStateChanged(AbsListView absListView, int i) { 
     } 

     @Override 
     public void onScroll(AbsListView absListView, int firstVisibleItem, int visibleItemCount, int totalItemCount) { 
      int dist = gridView.getDistanceToTop(); 

      if (dist == 0) 
       swipeRefreshLayout.setEnabled(true); 
      else { 
       swipeRefreshLayout.setEnabled(false); 
      } 

     } 
    }); 

Quindi aggiungere una funzione onRefresh.

 @Override 
    public void onRefresh() { 
     if (!swipeRefreshLayout.isRefreshing()) { 
      swipeRefreshLayout.setRefreshing(true); 
     } 
     //add functionality then set refresh to false 
     swipeRefreshLayout.setRefreshing(false); 
    }