Auf Aktualisierungsanfrage antworten

In diesem Dokument wird beschrieben, wie du deine App aktualisierst, wenn der Nutzer ein Handbuch anfordert eine Aktualisierung durch eine Wischgeste oder die Aktionsleiste Aktualisierungsaktion.

Auf Aktualisierungsbewegung reagieren

Wenn der Nutzer die Touch-Geste zum Aktualisieren durch Wischen ausführt, zeigt das System die und ruft die Callback-Methode Ihrer App auf. Ihre Callback-Methode ist für die Aktualisierung der App-Daten zuständig.

Um auf die Aktualisierungsgeste in Ihrer App zu reagieren, implementieren Sie die SwipeRefreshLayout.OnRefreshListener und ihre onRefresh() . Die Methode onRefresh() wird aufgerufen, wenn der Nutzer eine Wischgeste.

Fügen Sie den Code für den eigentlichen Aktualisierungsvorgang in eine separate Methode ein, vorzugsweise in einem ViewModel und rufen Sie diese Aktualisierungsmethode aus Ihrem onRefresh()-Implementierung. So können Sie dasselbe Update Methode zum Ausführen des Updates, wenn der Nutzer eine Aktualisierung aus der Aktion auslöst .

Rufen Sie in der Aktualisierungsmethode setRefreshing(false) wenn die Daten aktualisiert wurden. Durch den Aufruf dieser Methode wird der SwipeRefreshLayout um die Fortschrittsanzeige zu entfernen und den Inhalt der Ansicht zu aktualisieren.

Mit dem folgenden Code werden beispielsweise onRefresh() und Ruft die Methode myUpdateOperation() auf, um die angezeigten Daten zu aktualisieren. von einem ListView:

Kotlin

// Sets up a SwipeRefreshLayout.OnRefreshListener that invokes when
// the user performs a swipe-to-refresh gesture.

mySwipeRefreshLayout.setOnRefreshListener {
    Log.i(LOG_TAG, "onRefresh called from SwipeRefreshLayout")

    // This method performs the actual data-refresh operation and calls
    // setRefreshing(false) when it finishes.
    myUpdateOperation()
}

Java

// Sets up a SwipeRefreshLayout.OnRefreshListener that is invoked when
// the user performs a swipe-to-refresh gesture.

mySwipeRefreshLayout.setOnRefreshListener(() -> {
    Log.i(LOG_TAG, "onRefresh called from SwipeRefreshLayout");

    // This method performs the actual data-refresh operation and calls
    // setRefreshing(false) when it finishes.
    myUpdateOperation();
  }
);

Auf Aktualisierungsaktion reagieren

Wenn der Nutzer über die Aktionsleiste eine Aktualisierung anfordert, ruft das System die onOptionsItemSelected() . Ihre App reagiert auf diesen Anruf, indem sie die Fortschrittsanzeige und die App-Daten aktualisieren.

Um auf die Aktualisierungsaktion zu reagieren, onOptionsItemSelected() In der Überschreibungsmethode lösen Sie den SwipeRefreshLayout-Fortschrittsanzeige nach Aufruf setRefreshing() mit dem Wert true, führen Sie dann die Aktualisierungsvorgang ausführen. Führen Sie die eigentliche Aktualisierung in einer separaten Methode durch, kann aufgerufen werden, unabhängig davon, ob der Nutzer das Update durch Wischen auslöst oder auf die Aktionsleiste. Rufen Sie nach Abschluss des Updates setRefreshing(false) auf. um die Fortschrittsanzeige zu entfernen.

Der folgende Code zeigt, wie auf die Anfrageaktion reagiert wird:

Kotlin

// Listen for option item selections to receive a notification when the user
// requests a refresh by selecting the refresh action bar item.

override fun onOptionsItemSelected(item: MenuItem): Boolean {
    when (item.itemId) {

        // Check whether the user triggers a refresh:
        R.id.menu_refresh -> {
            Log.i(LOG_TAG, "Refresh menu item selected")

            // Signal SwipeRefreshLayout to start the progress indicator.
            mySwipeRefreshLayout.isRefreshing = true

            // Start the refresh background task. This method calls
            // setRefreshing(false) when it finishes.
            myUpdateOperation()

            return true
        }
    }

    // User doesn't trigger a refresh. Let the superclass handle this action.
    return super.onOptionsItemSelected(item)
}

Java

// Listen for option item selections to receive a notification when the user
// requests a refresh by selecting the refresh action bar item.

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {

        // Check whether the user triggers a refresh:
        case R.id.menu_refresh:
            Log.i(LOG_TAG, "Refresh menu item selected");

            // Signal SwipeRefreshLayout to start the progress indicator.
            mySwipeRefreshLayout.setRefreshing(true);

            // Start the refresh background task. This method calls
            // setRefreshing(false) when it finishes.
            myUpdateOperation();

            return true;
    }

    // User doesn't trigger a refresh. Let the superclass handle this action.
    return super.onOptionsItemSelected(item);
}