Yenileme isteğine yanıt verme

Bu dokümanda, kullanıcı manuel yenileme isteğinde bulunduğunda uygulamanızı nasıl güncelleyeceğiniz gösterilmektedir. Kullanıcı uygulamayı kaydırma hareketiyle tetikleyebilir veya işlem çubuğu yenileme işlemini kullanabilir.

Yenileme hareketine yanıt verin

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, uygulama verilerinin güncellenmesinden sorumludur.

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

Asıl güncelleme işleminin kodunu ayrı bir yönteme (tercihen bir ViewModel içine) yerleştirin ve onRefresh() uygulamanızdan bu güncelleme yöntemini çağırın. Bu şekilde, kullanıcı işlem çubuğundan yenilemeyi tetiklediğinde güncellemeyi gerçekleştirmek için aynı güncelleme yöntemini kullanabilirsiniz.

Güncelleme yönteminizde, verileri güncellemeyi bitirdiğinde setRefreshing(false) yöntemini çağırın. Bu yöntemin çağrılması, SwipeRefreshLayout öğesine ilerleme göstergesini kaldırması ve görünüm içeriğini güncellemesi talimatını verir.

Örneğin, aşağıdaki kod onRefresh() yöntemini uygular ve bir 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üleyip uygulama verilerini yenileyerek bu çağrıya yanıt verir.

Yenileme işlemine yanıt vermek için onOptionsItemSelected() geçersiz kılın. Geçersiz kılma yönteminizde, true değeriyle setRefreshing() yöntemini çağırarak SwipeRefreshLayout ilerleme göstergesini tetikleyin ve ardından güncelleme işlemini gerçekleştirin. Asıl güncellemeyi ayrı bir yöntemle gerçekleştirebilirsiniz. Böylece kullanıcı, güncellemeyi hızlıca kaydırdığında veya işlem çubuğunu kullandığında aynı yöntem çağrılabilir. Güncelleme tamamlandığında, yenileme ilerleme durumu göstergesini kaldırmak için setRefreshing(false) çağrısı yapın.

Aşağıdaki kod, istek işlemine nasıl yanıt verileceğini gösterir:

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