icancode.de

SwipeRefreshLayout – Pull to refresh

Einleitung

Rico Magnucki

Rico Magnucki

21st Century Digital Boy und Blog-Gründer. Studiert naturwissenschaftliche Informatik in Bielefeld. Auf dem Blog ist er der Ansprechpartner für LaTeX, schreibt Tutorials, dreht die Videos für YouTube und durchforstet das Internetz nach spannenden Dingen.


Neuste Artikel

HP Deskjet 3636 – Multitalent zum schmalen Preis 09th April, 2017

NETGEAR AC1750 Smart WLAN-Router im Test 10th January, 2016

Android

SwipeRefreshLayout – Pull to refresh

Veröffentlicht am .

Pull to Refresh ist irgendwie zum Standard geworden. Jede App implementiert es ein bisschen anders. In der Support Library gibt es seit einiger Zeit eine Komponente mit dem Namen SwipeRefreshLayout die genau dies tut – ohne viel Gefrickel.

SwipeRefreshExample icancode.de

Das Layout

Das Layout ist ziemlich einfach zu verwenden. In meinem Fall umschließt es einen RecyclerView.

<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.SwipeRefreshLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/swipeRefreshLayout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    >
  <android.support.v7.widget.RecyclerView
      android:id="@+id/contentRecycler"
      android:layout_width="match_parent"
      android:layout_height="match_parent"
      />
</android.support.v4.widget.SwipeRefreshLayout>

Der OnRefreshListener

Layout hin oder her, ohne Logik funktioniert das nicht. Wie so oft, gibt es hier einen Listener, der implementiert werden muss.

messageSwipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {  
    @Override public void onRefresh() {
       //Refresh all the things! \o/
    }
});

Normalerweise löse ich das so, dass ich nun eine refreshSomething() Methode habe, die das eigentliche abrufen der Daten übernimmt. Diese ruft schlussendlich onRefreshSomethingCompleted() auf. Dort wird dann der Adapter darüber informiert, dass sich die Daten geändert haben und beendet die Aktualisierungsanimation.

private void refreshSomething() {  
    //  Loading... Please wait...

    // Hooray we did it!
    onRefreshSomethingComplete();
}

void onRefreshSomethingComplete() {  
    // Notify Adapter
    // Tidy up your room
    // Cook dinner

    // Stop refresh animation
    messageSwipeRefreshLayout.setRefreshing(false);
}

Zur API – Doku geht es hier: SwipeRefreshLayout

Rico Magnucki

Rico Magnucki

http://magnucki.de

21st Century Digital Boy und Blog-Gründer. Studiert naturwissenschaftliche Informatik in Bielefeld. Auf dem Blog ist er der Ansprechpartner für LaTeX, schreibt Tutorials, dreht die Videos für YouTube und durchforstet das Internetz nach spannenden Dingen.

Navigation