Yenileme isteğine yanıt verme

Compose yöntemini deneyin
Jetpack Compose, Android için önerilen kullanıcı arayüzü araç setidir. Compose'da yenilemek için çekme işlemini nasıl kullanacağınızı öğrenin.

Bu belgede, kullanıcı manuel yenileme istediğinde uygulamanızı nasıl güncelleyeceğiniz gösterilmektedir. Kullanıcı, yenilemeyi kaydırma hareketiyle veya işlem çubuğu yenileme işlemiyle tetikleyebilir.

Yenileme hareketine yanıt verme

Kullanıcı, yenilemek için kaydırma hareketini yaptığında sistem ilerleme göstergesini görüntüler 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 bu arayüzün onRefresh() yöntemini uygulayın. Kullanıcı kaydırma hareketi yaptığında onRefresh() yöntemi çağrılır.

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

Güncelleme yönteminizde, verilerin güncellenmesi tamamlandığında setRefreshing(false) işlevini çağırın. Bu yöntemin çağrılması, ilerleme göstergesinin kaldırılması ve görünüm içeriklerinin güncellenmesi için SwipeRefreshLayout talimatını verir.

Örneğin, aşağıdaki kod onRefresh() işlevini uygular ve ListView tarafından gösterilen 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 veriyor.

Yenileme işlemine yanıt vermek için geçersiz kılın onOptionsItemSelected(). Geçersiz kılma yönteminizde, SwipeRefreshLayout ilerleme göstergesini setRefreshing() değerini true ile çağırarak tetikleyin, 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ırma hareketiyle tetiklese de işlem çubuğunu kullansa da aynı yöntem çağrılabilir. Güncelleme tamamlandığında yenileme ilerleme göstergesini kaldırmak için setRefreshing(false) numaralı telefonu arayı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);
}