Menambahkan geser untuk refresh ke aplikasi

Pola antarmuka pengguna geser-untuk-memuat ulang diimplementasikan sepenuhnya dalam widget SwipeRefreshLayout, yang mendeteksi geser vertikal, menampilkan status progres yang berbeda, dan memicu metode callback di aplikasi Anda. Aktifkan perilaku ini dengan menambahkan widget ke file tata letak sebagai induk ListView atau GridView dan menerapkan perilaku refresh yang dipanggil saat pengguna menggeser.

Halaman ini menunjukkan cara menambahkan widget ke tata letak yang ada. Tutorial ini juga menunjukkan cara menambahkan tindakan refresh ke area tambahan panel tindakan sehingga pengguna yang tidak dapat menggunakan gestur geser dapat memicu update manual dengan perangkat eksternal.

Menambahkan dependensi SwipeRefreshLayout

Untuk menggunakan SwipeRefreshLayout di aplikasi Anda, tambahkan dependensi berikut ke file build.gradle:

Groovy

dependencies {
    implementation "androidx.swiperefreshlayout:swiperefreshlayout:1.2.0-alpha01"
}

Kotlin

dependencies {
    implementation("androidx.swiperefreshlayout:swiperefreshlayout:1.2.0-alpha01")
}

Menambahkan Widget SwipeRefreshLayout

Untuk menambahkan widget geser untuk memuat ulang ke aplikasi yang ada, tambahkan SwipeRefreshLayout sebagai induk dari satu ListView atau GridView. SwipeRefreshLayout hanya mendukung satu turunan ListView atau GridView.

Contoh berikut menunjukkan cara menambahkan widget SwipeRefreshLayout ke file tata letak yang sudah ada yang berisi ListView:

<androidx.swiperefreshlayout.widget.SwipeRefreshLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/swiperefresh"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <ListView
        android:id="@android:id/list"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

</androidx.swiperefreshlayout.widget.SwipeRefreshLayout>

Anda juga dapat menggunakan widget SwipeRefreshLayout dengan ListFragment. Jika tata letak berisi ListView dengan ID "@android:id/list", fungsi geser untuk memuat ulang akan otomatis didukung. Namun, mendeklarasikan ListView secara eksplisit dengan cara ini akan menggantikan struktur tampilan ListFragment default. Jika Anda ingin menggunakan struktur tampilan default, ganti bagian dari perilaku SwipeRefreshLayout dan ListFragment.

Menambahkan tindakan muat ulang ke panel tindakan

Tambahkan tindakan refresh ke panel tindakan aplikasi Anda sehingga pengguna yang tidak dapat melakukan gestur geser dapat memicu update manual. Misalnya, pengguna dengan kebutuhan aksesibilitas dapat memicu tindakan panel tindakan menggunakan perangkat eksternal, seperti keyboard dan D-pad.

Tambahkan tindakan refresh sebagai item menu, bukan sebagai tombol, dengan menetapkan atribut android:showAsAction=never. Jika Anda menampilkan tindakan sebagai tombol, pengguna mungkin menganggap tindakan tombol refresh berbeda dengan tindakan geser untuk memuat ulang. Membuat tindakan refresh tidak terlalu mencolok di panel tindakan mendorong pengguna untuk melakukan update manual dengan gestur geser sekaligus mempertahankan opsi yang dapat diakses tempat pengguna D-pad mencarinya.

Kode berikut menunjukkan cara menambahkan tindakan geser untuk memuat ulang ke area tambahan:

<menu xmlns:android="http://schemas.android.com/apk/res/android" >
    <item
        android:id="@+id/menu_refresh"
        android:showAsAction="never"
        android:title="@string/menu_refresh"/>
</menu>