Yenileme isteğine yanıt verme

Bu dokümanda, kullanıcı bir kılavuz istediğinde uygulamanızın nasıl güncelleneceği gösterilmektedir ister kaydırma hareketiyle ister işlem çubuğunu kullanarak tetikleyin, yenileyin yenileme işlemi.

Yenileme hareketine yanıt verme

Kullanıcı yenilemek için kaydırma hareketini yaptığında sistem İlerleme göstergesi 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ü ve onRefresh() yöntemidir. Kullanıcı bir işlem gerçekleştirdiğinde onRefresh() yöntemi çağrılır. kaydırma hareketi.

Gerçek güncelleme işleminin kodunu ayrı bir yönteme (tercihen) bir ViewModel ile ilişkilendirebilir ve onRefresh() uygulanması. Bu şekilde, aynı güncellemeyi Kullanıcı işlemden bir yenilemeyi tetiklediğinde güncellemeyi gerçekleştirme yöntemi çubuk.

Güncelleme yönteminizde setRefreshing(false). veri güncellemesi bittiğinde. Bu yöntemin çağrılması SwipeRefreshLayout. simgesini tıklayın.

Örneğin, aşağıdaki kod onRefresh() ve gösterilen verileri güncellemek için myUpdateOperation() yöntemini çağırır tarafından 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();
  }
);

Yenileme işlemine yanıt verme

Kullanıcı işlem çubuğunu kullanarak bir yenileme isteğinde bulunursa sistem, onOptionsItemSelected(). yöntemidir. Uygulamanız bu çağrıya, ilerleme durumu göstergesini ve ekranın üst kısmındaki uygulamanın verilerini yeniliyor.

Yenileme işlemine yanıt vermek için geçersiz kıl onOptionsItemSelected() Geçersiz kılma yönteminizde, aşağıdakileri tetiklemek için Telefon ederek SwipeRefreshLayout ilerleme göstergesi true değerini setRefreshing() ile değiştirin, ardından şunu gerçekleştirin: güncelleme işlemi. Asıl güncellemeyi ayrı bir yöntemde yapın. Bu şekilde yöntemi, kullanıcı güncellemeyi kaydırmayla mı yoksa kullanıcı tarafından yapılan tıklayın. Güncelleme tamamlandığında setRefreshing(false) numaralı telefonu arayın yenileme ilerleme göstergesini kaldırı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);
}