Menyesuaikan daftar dinamis   Bagian dari Android Jetpack.

Mencoba 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 diperlukan oleh sebagian besar developer. Di beberapa dalam banyak kasus, Anda hanya perlu mendesain tampilan untuk setiap view holder dan menulis kode untuk memperbarui tampilan tersebut dengan data yang sesuai. Namun, jika aplikasi Anda memiliki persyaratan spesifik, Anda dapat memodifikasi perilaku standar dalam beberapa cara. Dokumen ini menjelaskan beberapa kemungkinan penyesuaian.

Mengubah tata letak

RecyclerView menggunakan pengelola tata letak untuk memosisikan individu item di layar dan untuk menentukan kapan harus menggunakan kembali tampilan item yang sudah 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. Pendaurulangan meningkat dengan cara ini performa dengan menghindari pembuatan tampilan yang tidak perlu atau mahal findViewById() pencarian. Android Support Library menyertakan tiga pengelola tata letak standar, yang menawarkan banyak opsi penyesuaian:

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

Jika {i>layout manager<i} ini tidak sesuai dengan kebutuhan Anda, Anda dapat membuat {i>layout<i} sendiri dengan memperluas RecyclerView.LayoutManager abstrak.

Menambahkan animasi item

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

Mengaktifkan pilihan item daftar

Library recyclerview-selection memungkinkan pengguna memilih item dalam daftar RecyclerView menggunakan input sentuh atau mouse. Ini memungkinkan Anda tetap memegang kendali atas presentasi visual dari item yang dipilih. Anda juga dapat mempertahankan kontrol atas kebijakan yang mengendalikan perilaku pemilihan, seperti item yang memenuhi syarat untuk dipilih dan jumlah item yang dapat dipilih.

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

  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. Terapkan ItemDetailsLookup.
  3. ItemDetailsLookup memungkinkan akses library pemilihan informasi tentang RecyclerView item dengan MotionEvent. Secara efektif, ini adalah factory untuk instance ItemDetails yang dicadangkan oleh, atau diekstrak dari, instance RecyclerView.ViewHolder.

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

    Library pilihan tidak menyediakan dekorasi visual default untuk item yang dipilih. Berikan hal ini saat Anda menerapkan 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 memberikan alat kepada pengguna untuk melakukan tindakan atas pilihan.
  6. Daftarkan SelectionTracker.SelectionObserver untuk diberi tahu saat pilihan berubah. Saat pilihan pertama kali dibuat, mulai ActionMode untuk menampilkan ini kepada pengguna dan memberikan tindakan tertentu untuk setiap pilihan. Misalnya, Anda dapat menambahkan tombol hapus ke panel ActionMode dan menghubungkan panah kembali di panel tersebut untuk menghapus pilihan. Saat pilihan menjadi kosong—jika pengguna menghapus pilihan terakhir kali—hentikan mode tindakan.

  7. Lakukan tindakan sekunder apa pun yang ditafsirkan.
  8. Di akhir pipeline pemrosesan peristiwa, library ini dapat 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 informasi selengkapnya, lihat SelectionTracker.Builder.

  9. Susun 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 membuat instance SelectionTracker, aplikasi Anda harus menyediakan RecyclerView.Adapter yang sama dengan yang Anda gunakan untuk menginisialisasi RecyclerView ke SelectionTracker.Builder. Oleh karena itu, setelah Anda membuat SelectionTracker, masukkan ke dalam instance RecyclerView.Adapter. Jika tidak, Anda tidak dapat memeriksa status 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 nomor onSaveInstanceState() dan onRestoreInstanceState() dari metode aktivitas onSaveInstanceState() dan onRestoreInstanceState() masing-masing. Aplikasi Anda juga harus memberikan ID pemilihan unik ke Konstruktor SelectionTracker.Builder. ID ini diperlukan karena aktivitas atau fragmen mungkin memiliki lebih dari satu daftar unik yang dapat dipilih, yang semuanya harus dipertahankan dalam status tersimpannya.

Referensi lainnya

Lihat referensi berikut untuk informasi tambahan.