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