2014-11-07 15 views
26

Sto cercando di implementare pull-to-refresh in Android. So che c'è lo SwipeRefreshLayout ma con tutte le app di Google appena progettate come Drive (vedi allegato) per Lollipop, ho notato che c'è una nuova icona di aggiornamento che appare nella vista quando viene tirata. Ho provato a guardarlo online ma invano. Android ha rilasciato questo elemento come parte del Material Design? Qualche idea su come implementarlo?Lollipop Android - Tirare per aggiornare

MODIFICA: alcune persone hanno indicato come questo è un duplicato di How to implement a Pull-to-refresh. Non è la stessa domanda. Lo vedrai se leggi correttamente la domanda.

enter image description here

+5

rilasciato. SwipeRefreshLayout ha questo fantastico pulsante fuori dalla scatola –

+0

possibile duplicato di [Come implementare Android Pull-to-Refresh] (http://stackoverflow.com/questions/4583484/how-to-implement-android-pull-to-refresh) –

+0

@ MarianPaździoch se si guarda da vicino, non è così. – Nerd

risposta

60

Questo è SwipeRefreshLayout. La versione 21 della libreria di supporto include la sostituzione del vecchio stile.

+0

Questa è la risposta corretta, grazie! – Roman

19
  1. Scarica l'ultimo SDK Lollipop e libreria di supporto/Android Extra
  2. Impostare build target del progetto ad Android 5.0 (altrimenti il ​​pacchetto di supporto può avere errori con risorse)
  3. Aggiornamento vostre librerie/android-support-v4.jar alla versione 21
  4. Usa android.support.v4.widget.SwipeRefreshLayout più android.support.v4.widget.SwipeRefreshLayout.OnRefreshListener

guida dettagliata potrebbe essere trovato qui: http://antonioleiva.com/swiperefreshlayout/

Plus per ListView vi consiglio di leggere su canChildScrollUp() nei commenti;)

7

Mi piace questa guida la migliore e la sua davvero facile da capire: https://www.bignerdranch.com/blog/implementing-swipe-to-refresh/

  1. Aggiungere il seguente alla Gradle:

    compile 'com.android.support:support-v4:22.2.0'

  2. Aggiungere il colpo a aggiorna il tuo layout - inserisci listview o recyclerview nel mezzo di swiperefres hlayout:

    <ListView 
         android:id="@+id/activity_main_listview" 
         android:layout_width="match_parent" 
         android:layout_height="match_parent" 
         > 
        </ListView> 
    
    </android.support.v4.widget.SwipeRefreshLayout> 
    
  3. Aggiungi nel codice per il mainactivity:

    public class MainActivity extends Activity { 
    
    ListView mListView; 
    SwipeRefreshLayout mSwipeRefreshLayout; 
    Adapter mAdapter; 
    
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
        super.onCreate(savedInstanceState); 
        setContentView(R.layout.acivity_main); 
        SwipeRefreshLayout mSwipeRefreshLayout = (SwipeRefreshLayout) findViewById(R.id.activity_main_swipe_refresh_layout); 
        mListView = findViewById(R.id.activity_main_list_view); 
        mListView.setAdapter(new ArrayAdapter<String>(){ 
        String[] fakeTweets = getResources().getStringArray(R.array.fake_tweets); 
        mAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, fakeTweets) 
        listView.setAdapter(mAdapter); 
    }); 
    } 
    

    }

  4. Non dimenticare di chiamare mSwipeRefreshLayout.setRefreshing (false); una volta che il tuo rinfresco finisce.

+0

Aggiungere un modulo di codice che rimanda per evitare errori se in futuro il collegamento non è raggiungibile –

Problemi correlati