Yenileme isteğine yanıt verme

Oluşturma yöntemini deneyin
Android için önerilen kullanıcı arayüzü araç seti Jetpack Compose'dur. Oluştur'da nasıl yenileyeceğinizi öğrenin.

Bu dokümanda, kullanıcı manuel yenileme isteğinde bulunduğunda (kaydırma hareketiyle tetikleyip tetiklemediğine veya işlem çubuğundaki yenileme işlemini kullanıp kullanmadığına bakılmaksızın) uygulamanızın nasıl güncelleneceği gösterilmektedir.

Yenileme hareketine yanıt verme

Kullanıcı yenilemek için kaydırma hareketi yaptığında sistem ilerleme göstergesini gösterir ve uygulamanızın geri çağırma yöntemini çağırır. Geri çağırma yönteminiz, uygulamanın verilerini güncellemekten sorumludur.

Uygulamanızda yenileme hareketine yanıt vermek için SwipeRefreshLayout.OnRefreshListener arayüzünü ve onun onRefresh() yöntemini uygulayın. onRefresh() yöntemi, kullanıcı kaydırma hareketi yaptığında çağrılır.

Gerçek güncelleme işleminin kodunu ayrı bir yönteme (tercihen bir ViewModel içine) koyun ve bu güncelleme yöntemini onRefresh() uygulamanızdan çağırın. Bu sayede, kullanıcı işlem çubuğundan yenileme işlemini tetiklediğinde güncellemeyi gerçekleştirmek için aynı güncelleme yöntemini kullanabilirsiniz.

Güncelleme yönteminizde, verileri güncelleme işlemi tamamlandığında setRefreshing(false) işlevini çağırın. Bu yöntemin çağrılması, SwipeRefreshLayout için ilerleme göstergesinin kaldırılmasını ve görüntüleme içeriklerinin güncellenmesini sağlar.

Örneğin, aşağıdaki kod onRefresh()'ü uygular ve bir ListView tarafından görüntülenen verileri güncellemek için myUpdateOperation() yöntemini çağırır:

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();
  }
);

Yenileme işlemine yanıt verme

Kullanıcı, işlem çubuğunu kullanarak yenileme isteğinde bulunursa sistem onOptionsItemSelected() yöntemini çağırır. Uygulamanız, ilerleme göstergesini görüntüleyerek ve uygulamanın verilerini yenileyerek bu çağrıya yanıt verir.

Yenileme işlemine yanıt vermek için onOptionsItemSelected() değerini geçersiz kılın. Geçersiz kılma yönteminizde, setRefreshing() değerini true ile çağırarak SwipeRefreshLayout ilerleme göstergesini tetikleyin ve ardından güncelleme işlemini gerçekleştirin. Gerçek güncellemeyi ayrı bir yöntemde gerçekleştirin. Böylece, kullanıcı güncellemeyi kaydırarak tetiklerse veya işlem çubuğunu kullanırsa aynı yöntem çağrılabilir. Güncelleme tamamlandığında, yenileme ilerleme göstergesini kaldırmak için setRefreshing(false)'yi çağırın.

Aşağıdaki kodda, istek işlemine nasıl yanıt verileceği gösterilmektedir:

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);
}