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 RecyclerView objek untuk memenuhi kebutuhan spesifik Anda. Class standar yang dijelaskan di Buat daftar dinamis dengan RecyclerView menyediakan semua fungsi yang dibutuhkan 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 tidak lagi terlihat oleh pengguna. Untuk menggunakan kembali—atau mendaur ulang—tampilan, tata letak mungkin meminta adaptor untuk mengganti konten tampilan dengan elemen yang berbeda dari {i>dataset<i}. 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: mengatur item dalam daftar satu dimensi. Menggunakan RecyclerView dengan LinearLayoutManager memberikan fungsionalitas seperti ListView tata letak.
  • GridLayoutManager: mengatur item dalam kisi-kisi dua dimensi, seperti persegi pada papan catur. Menggunakan RecyclerView dengan GridLayoutManager menyediakan fungsi seperti GridView tata letak.
  • StaggeredGridLayoutManager: mengatur item dalam kisi-kisi dua dimensi, dengan setiap kolom sedikit diimbangi dari yang sebelumnya, seperti bintang-bintang di bendera Amerika.

Jika pengelola tata letak ini tidak sesuai dengan kebutuhan Anda, Anda dapat membuatnya 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

Tujuan recyclerview-selection library memungkinkan pengguna memilih item dalam daftar RecyclerView menggunakan sentuhan atau input mouse. Ini memungkinkan Anda tetap memegang kendali atas presentasi visual dari item yang dipilih. Anda juga dapat mempertahankan kontrol atas kebijakan yang mengontrol pilihan perilaku pelanggan, 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 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 pilihan, lihat SelectionTracker.Builder.

  2. Terapkan ItemDetailsLookup.
  3. ItemDetailsLookup memungkinkan akses library pemilihan informasi tentang RecyclerView item dengan MotionEvent. Pada dasarnya Cloud adalah pabrik untuk ItemDetails yang didukung oleh, atau diekstrak dari, RecyclerView.ViewHolder di instance Compute Engine.

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

    Library pilihan tidak menyediakan dekorasi visual default untuk item yang dipilih. Berikan hal ini saat Anda menerapkan onBindViewHolder(). Kami merekomendasikan pendekatan berikut:

    • Dalam onBindViewHolder(), panggil setActivated()bukan setSelected()—aktif objek View dengan true atau false, bergantung pada apakah item dipilih.
    • Perbarui gaya tampilan untuk menunjukkan status yang diaktifkan. Rab sarankan gunakan status warna daftar resource untuk mengonfigurasi gaya.
  5. Gunakan ActionMode untuk menyediakan pengguna dengan alat untuk melakukan aksi pada 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 Batang ActionMode dan menghubungkan panah kembali pada batang untuk menghapus yang dipilih. Saat pilihan kosong—jika pengguna menghapus pilihan terakhir kali—menghentikan mode tindakan.

  7. Melakukan tindakan sekunder apa pun yang ditafsirkan.
  8. Di akhir pipeline pemrosesan peristiwa, library dapat menentukan bahwa pengguna mencoba mengaktifkan item, dengan mengetuknya, atau sedang mencoba menyeret sebuah item atau sekumpulan item yang dipilih. Respons interpretasi ini dengan mendaftarkan pemroses yang sesuai. Untuk selengkapnya informasi, 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 membangun SelectionTracker aplikasi Anda harus menyediakan RecyclerView.Adapter yang Anda gunakan untuk menginisialisasi RecyclerView agar SelectionTracker.Builder. Oleh karena itu, setelah Anda membuat SelectionTracker, masukkan ke dalam RecyclerView.Adapter. Jika tidak, Anda tidak dapat memeriksa status yang dipilih dari metode onBindViewHolder().

  11. Sertakan pilihan di aktivitas siklus proses Anda.
  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 berbeda yang dapat dipilih, yang semuanya perlu dipertahankan dalam status tersimpan mereka.

Referensi lainnya

Lihat referensi berikut untuk informasi tambahan.