Menyesuaikan daftar dinamis Bagian dari Android Jetpack.

Coba cara Compose
Jetpack Compose adalah toolkit UI yang direkomendasikan untuk Android. Pelajari cara menggunakan tata letak di Compose.

Anda dapat menyesuaikan objek RecyclerView untuk memenuhi kebutuhan spesifik Anda. Class standar yang dijelaskan dalam Membuat daftar dinamis dengan RecyclerView menyediakan semua fungsi yang dibutuhkan sebagian besar developer. Dalam banyak kasus, Anda hanya perlu mendesain tampilan untuk setiap holder tampilan dan menulis kode untuk memperbarui tampilan tersebut dengan data yang sesuai. Namun, jika aplikasi Anda memiliki persyaratan tertentu, Anda dapat mengubah perilaku standar ini melalui beberapa cara. Dokumen ini menjelaskan beberapa kemungkinan penyesuaian.

Mengubah tata letak

RecyclerView menggunakan pengelola tata letak untuk memosisikan setiap item di layar dan menentukan kapan harus menggunakan kembali tampilan item yang tidak lagi terlihat oleh pengguna. Untuk menggunakan kembali—atau mendaur ulang—tampilan, pengelola tata letak dapat meminta adaptor untuk mengganti konten tampilan dengan elemen lain dari set data. Mendaur ulang tampilan dengan cara ini akan meningkatkan performa dengan menghindari pembuatan tampilan yang tidak diperlukan atau melakukan pencarian findViewById() yang mahal. Android Support Library menyertakan tiga pengelola tata letak standar, yang semuanya menawarkan banyak opsi penyesuaian:

  • LinearLayoutManager: menyusun item dalam daftar satu dimensi. Penggunaan RecyclerView dengan LinearLayoutManager menyediakan fungsi seperti tata letak ListView.
  • GridLayoutManager: menyusun item dalam petak dua dimensi, seperti persegi di papan catur. Penggunaan RecyclerView dengan GridLayoutManager akan menyediakan fungsi seperti tata letak GridView.
  • StaggeredGridLayoutManager: menyusun item dalam petak dua dimensi, dengan setiap kolom sedikit di-offset dari kolom sebelumnya, seperti bintang pada bendera Amerika.

Jika pengelola tata letak ini tidak sesuai dengan kebutuhan, Anda dapat membuatnya sendiri dengan memperluas class abstrak RecyclerView.LayoutManager.

Menambahkan animasi item

Setiap kali item berubah, RecyclerView akan menggunakan animator untuk mengubah tampilannya. Animator ini adalah objek yang memperluas class RecyclerView.ItemAnimator abstrak. Secara default, RecyclerView menggunakan DefaultItemAnimator untuk menyediakan animasi. Jika ingin menyediakan animasi kustom, Anda dapat menentukan objek animator sendiri dengan memperluas RecyclerView.ItemAnimator.

Mengaktifkan pilihan item daftar

Library recyclerview-selection memungkinkan pengguna memilih item dalam daftar RecyclerView menggunakan input sentuh atau mouse. Hal ini memungkinkan Anda mempertahankan kontrol atas presentasi visual item yang dipilih. Anda juga dapat mempertahankan kontrol atas kebijakan yang mengontrol perilaku pemilihan, seperti item mana yang memenuhi syarat untuk dipilih dan berapa banyak item yang dapat dipilih.

Untuk menambahkan dukungan pemilihan ke instance RecyclerView, ikuti langkah-langkah ini:

  1. Tentukan jenis kunci pemilihan yang akan digunakan, lalu buat ItemKeyProvider.

    Ada tiga jenis kunci yang dapat Anda gunakan untuk mengidentifikasi item yang dipilih:

    Untuk informasi mendetail tentang jenis kunci pemilihan, lihat SelectionTracker.Builder.

  2. Implementasikan ItemDetailsLookup.
  3. ItemDetailsLookup memungkinkan library pemilihan mengakses informasi tentang item RecyclerView yang diberi MotionEvent. Secara efektif, ini adalah factory untuk instance ItemDetails yang didukung oleh, atau diekstrak dari, instance RecyclerView.ViewHolder.

  4. Update objek View item di RecyclerView untuk menunjukkan apakah pengguna memilih atau membatalkan pilihannya.

    Library pemilihan tidak menyediakan dekorasi visual default untuk item yang dipilih. Berikan kode ini saat Anda mengimplementasikan onBindViewHolder(). Kami merekomendasikan pendekatan berikut:

    • Di onBindViewHolder(), panggil setActivated()bukan setSelected()—pada objek View dengan true atau false, bergantung pada apakah item dipilih.
    • Perbarui gaya tampilan untuk menunjukkan status yang diaktifkan. Sebaiknya gunakan resource daftar status warna untuk mengonfigurasi gaya.
  5. Gunakan ActionMode untuk memberi pengguna alat guna melakukan tindakan atas pilihan.
  6. Daftarkan SelectionTracker.SelectionObserver untuk menerima notifikasi saat pilihan berubah. Saat pilihan pertama kali dibuat, mulai ActionMode untuk menampilkan ini kepada pengguna dan menyediakan tindakan untuk pilihan tertentu. Misalnya, Anda dapat menambahkan tombol hapus ke panel ActionMode dan menghubungkan panah kembali pada panel tersebut untuk menghapus pilihan. Saat pilihan menjadi kosong—jika pengguna menghapus pilihan untuk terakhir kalinya—hentikan mode tindakan.

  7. Melakukan tindakan sekunder apa pun yang diperlukan.
  8. Di akhir pipeline pemrosesan peristiwa, library mungkin menentukan bahwa pengguna mencoba mengaktifkan item, dengan mengetuknya, atau mencoba menarik item atau serangkaian item yang dipilih. Respons interpretasi ini dengan mendaftarkan pemroses yang sesuai. Untuk mengetahui informasi selengkapnya, lihat SelectionTracker.Builder.

  9. Rangkai semuanya dengan SelectionTracker.Builder.
  10. Contoh berikut menunjukkan cara menyatukan bagian-bagian ini:

    Kotlin

        var tracker = SelectionTracker.Builder(
            "my-selection-id",
            recyclerView,
            StableIdKeyProvider(recyclerView),
            MyDetailsLookup(recyclerView),
            StorageStrategy.createLongStorage())
                .withOnItemActivatedListener(myItemActivatedListener)
                .build()
        

    Java

        SelectionTracker tracker = new SelectionTracker.Builder<>(
                "my-selection-id",
                recyclerView,
                new StableIdKeyProvider(recyclerView),
                new MyDetailsLookup(recyclerView),
                StorageStrategy.createLongStorage())
                .withOnItemActivatedListener(myItemActivatedListener)
                .build();
        

    Untuk membangun instance SelectionTracker, aplikasi Anda harus menyediakan RecyclerView.Adapter yang sama dengan yang Anda gunakan untuk menginisialisasi RecyclerView ke SelectionTracker.Builder. Karena alasan ini, setelah Anda membuat instance SelectionTracker, masukkan ke RecyclerView.Adapter Anda. Jika tidak, Anda tidak dapat memeriksa status item yang dipilih dari metode onBindViewHolder().

  11. Sertakan pilihan dalam peristiwa siklus proses aktivitas.
  12. Untuk mempertahankan status pemilihan di seluruh peristiwa siklus proses aktivitas, aplikasi Anda harus memanggil metode onSaveInstanceState() dan onRestoreInstanceState() pelacak pemilihan dari metode onSaveInstanceState() dan onRestoreInstanceState() aktivitas. Aplikasi Anda juga harus memberikan ID pemilihan unik ke konstruktor SelectionTracker.Builder. ID ini diperlukan karena suatu aktivitas atau fragmen mungkin memiliki lebih dari satu daftar berbeda yang dapat dipilih, yang semuanya harus dipertahankan dalam status tersimpannya.

Referensi tambahan

Lihat referensi berikut untuk informasi tambahan.