Aktualisieren durch Wischen in App hinzufügen

Das Muster der Benutzeroberfläche zum Aktualisieren durch Wischen wird vollständig im SwipeRefreshLayout-Widget implementiert, das vertikales Wischen erkennt, eine eindeutige Fortschrittsanzeige anzeigt und Callback-Methoden in Ihrer App auslöst. Sie können dieses Verhalten aktivieren, indem Sie das Widget als übergeordnetes Element von ListView oder GridView in Ihre Layoutdatei einfügen und das Aktualisierungsverhalten implementieren, das ausgelöst wird, wenn der Nutzer wischt.

Auf dieser Seite wird beschrieben, wie Sie das Widget einem vorhandenen Layout hinzufügen. Außerdem wird gezeigt, wie Sie dem Überlaufbereich der Aktionsleiste eine Aktualisierungsaktion hinzufügen, damit Nutzer, die die Wischgeste nicht verwenden können, eine manuelle Aktualisierung mit einem externen Gerät auslösen können.

SwipeRefreshLayout-Abhängigkeit hinzufügen

Wenn Sie SwipeRefreshLayout in Ihrer App verwenden möchten, fügen Sie der Datei build.gradle die folgende Abhängigkeit hinzu:

Groovig

dependencies {
    implementation "androidx.swiperefreshlayout:swiperefreshlayout:1.2.0-alpha01"
}

Kotlin

dependencies {
    implementation("androidx.swiperefreshlayout:swiperefreshlayout:1.2.0-alpha01")
}

Widget "SwipeRefreshLayout" hinzufügen

Wenn Sie das Widget zum Aktualisieren durch Wischen einer vorhandenen App hinzufügen möchten, fügen Sie SwipeRefreshLayout als übergeordnetes Element einer einzelnen ListView oder GridView hinzu. SwipeRefreshLayout unterstützt nur ein einzelnes ListView- oder GridView-untergeordnetes Element.

Das folgende Beispiel zeigt, wie Sie das SwipeRefreshLayout-Widget einer vorhandenen Layoutdatei mit einem ListView-Element hinzufügen:

<androidx.swiperefreshlayout.widget.SwipeRefreshLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/swiperefresh"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <ListView
        android:id="@android:id/list"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

</androidx.swiperefreshlayout.widget.SwipeRefreshLayout>

Sie können das SwipeRefreshLayout-Widget auch mit einer ListFragment verwenden. Wenn das Layout eine ListView mit der ID "@android:id/list" enthält, wird die Funktion zum Aktualisieren automatisch unterstützt. Diese explizite Deklaration des ListView ersetzt jedoch die standardmäßige Ansichtsstruktur ListFragment. Wenn Sie die Standardansichtsstruktur verwenden möchten, überschreiben Sie Teile des Verhaltens SwipeRefreshLayout und ListFragment.

Aktualisierungsaktion zur Aktionsleiste hinzufügen

Fügen Sie der Aktionsleiste Ihrer App eine Aktualisierungsaktion hinzu, damit Nutzer, die keine Wischgesten ausführen können, ein manuelles Update auslösen können. Nutzer mit Anforderungen an Bedienungshilfen können Aktionen auf der Aktionsleiste beispielsweise mit externen Geräten wie Tastaturen und Steuerkreuzen auslösen.

Fügen Sie die Aktualisierungsaktion als Menüpunkt und nicht als Schaltfläche hinzu. Legen Sie dazu das Attribut android:showAsAction=never fest. Wenn Sie die Aktion als Schaltfläche anzeigen lassen, nehmen Nutzer möglicherweise an, dass sich die Aktion der Schaltfläche zum Aktualisieren von der Aktion „Zum Aktualisieren wischen“ unterscheidet. Wenn die Aktualisierungsaktion in der Aktionsleiste weniger deutlich sichtbar ist, werden Nutzer dazu ermuntert, manuelle Aktualisierungen mit Wischgesten auszuführen. Die Option, bei der Nutzer des Steuerkreuzes danach suchen, bleibt dabei erhalten.

Der folgende Code zeigt, wie die Aktion zum Aktualisieren durch Wischen zum Überlaufbereich hinzugefügt wird:

<menu xmlns:android="http://schemas.android.com/apk/res/android" >
    <item
        android:id="@+id/menu_refresh"
        android:showAsAction="never"
        android:title="@string/menu_refresh"/>
</menu>