Menyesuaikan daftar dinamis Bagian dari Android Jetpack.
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. Dalam banyak kasus, Anda hanya perlu mendesain tampilan untuk setiap penampung tampilan dan menulis kode untuk memperbarui tampilan tersebut dengan data yang sesuai. Namun, jika aplikasi Anda memiliki persyaratan tertentu, Anda dapat mengubah perilaku standar dengan beberapa cara.
Dokumen ini menjelaskan beberapa penyesuaian yang mungkin dilakukan.
Mengubah tata letak
RecyclerView menggunakan pengelola tata letak untuk menempatkan item tertentu di layar dan menentukan kapan tampilan item yang tidak lagi terlihat oleh pengguna akan digunakan kembali. Untuk menggunakan kembali—atau mendaur ulang—tampilan, pengelola tata letak
mungkin meminta adapter untuk mengganti konten tampilan dengan elemen
yang berbeda dari set data. Mendaur ulang tampilan dengan cara ini akan meningkatkan performa dengan menghindari pembuatan tampilan yang tidak perlu atau melakukan pencarian findViewById() yang mahal. Android Support Library menyertakan tiga pengelola tata letak standar,
yang masing-masing menawarkan banyak opsi penyesuaian:
LinearLayoutManager: menyusun item dalam daftar satu dimensi. Menggunakan aRecyclerViewdenganLinearLayoutManagermenyediakan fungsi seperti aListViewtata letak.GridLayoutManager: menyusun item dalam petak dua dimensi, seperti persegi di papan catur. MenggunakanRecyclerViewdenganGridLayoutManagermenyediakan fungsi seperti aGridViewtata letak.StaggeredGridLayoutManager: menyusun item dalam petak dua dimensi, di mana setiap kolom sedikit di-offset dari kolom sebelumnya, seperti bintang dalam bendera Amerika.
Jika pengelola tata letak ini tidak sesuai dengan kebutuhan Anda, Anda dapat membuatnya sendiri dengan memperluas class abstrak RecyclerView.LayoutManager.
Menambahkan animasi item
Setiap kali item berubah, RecyclerView akan menggunakan animator untuk mengubah penampilannya. Animator ini adalah objek yang memperluas class abstrak RecyclerView.ItemAnimator. Secara default, RecyclerView menggunakan DefaultItemAnimator untuk menyediakan animasi. Jika ingin memberikan 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 mengendalikan perilaku pemilihan, seperti item yang memenuhi syarat untuk dipilih dan banyaknya item yang dapat dipilih.
Untuk menambahkan dukungan pemilihan ke instance RecyclerView, ikuti langkah-langkah berikut:
- Tentukan jenis kunci pemilihan yang akan digunakan, lalu buat
ItemKeyProvider.Ada tiga jenis kunci yang dapat Anda gunakan untuk mengidentifikasi item yang dipilih:
Parcelabledan subclass-nya, sepertiUriStringLong
Untuk informasi mendetail tentang jenis kunci pemilihan, lihat
SelectionTracker.Builder. - Terapkan
ItemDetailsLookup. - Perbarui objek item
ViewdiRecyclerViewuntuk menunjukkan apakah pengguna memilih atau membatalkan pilihan item tersebut.Library pemilihan tidak menyediakan dekorasi visual default untuk item yang dipilih. Berikan ini saat Anda menerapkan
onBindViewHolder(). Sebaiknya gunakan pendekatan berikut:- Di
onBindViewHolder(), panggilsetActivated()—bukansetSelected()—pada objekViewdengantrueataufalse, bergantung pada apakah item dipilih atau tidak. - Perbarui gaya tampilan untuk menunjukkan status yang diaktifkan. Sebaiknya gunakan resource daftar status warna untuk mengonfigurasi gaya.
- Di
- Gunakan
ActionModeuntuk memberi pengguna alat untuk melakukan tindakan pada pilihan. - Lakukan tindakan sekunder apa pun yang diperlukan.
- Rangkai semuanya dengan
SelectionTracker.Builder. - Sertakan pilihan dalam aktivitas siklus proses peristiwa.
ItemDetailsLookup memungkinkan library pemilihan mengakses informasi tentang RecyclerView item yang diberi MotionEvent.
Secara efektif, ini adalah factory untuk
ItemDetails
instance yang dicadangkan oleh, atau diekstrak dari, sebuah
RecyclerView.ViewHolder
instance.
Daftarkan
SelectionTracker.SelectionObserver
untuk menerima pemberitahuan saat pilihan berubah. Saat pilihan dibuat untuk pertama kalinya,
mulai ActionMode untuk menampilkannya kepada pengguna dan menyediakan
tindakan untuk pilihan tertentu. Misalnya, Anda dapat menambahkan tombol hapus ke
ActionMode panel dan menghubungkan panah mundur di panel tersebut untuk menghapus
pilihan. Setelah pilihan kosong—karena dihapus oleh pengguna—hentikan mode tindakan.
Di akhir pipeline pemrosesan peristiwa, library ini 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.
Contoh berikut menunjukkan cara menggabungkan 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
SelectionTracker
instance, aplikasi Anda harus menyediakan RecyclerView.Adapter
yang sama dengan yang Anda gunakan untuk menginisialisasi RecyclerView ke
SelectionTracker.Builder. Karena alasan ini, setelah Anda membuat
SelectionTracker instance, masukkan ke dalam
RecyclerView.Adapter. Jika tidak, Anda tidak dapat memeriksa status item yang
dipilih dari metode onBindViewHolder().
Agar status pemilihan bertahan di sepanjang peristiwa siklus proses aktivitas, aplikasi Anda
harus memanggil metode
onSaveInstanceState()
dan
onRestoreInstanceState()
di pelacak pilihan dari metode
onSaveInstanceState()
dan
onRestoreInstanceState()
aktivitas. Aplikasi Anda juga harus memasukkan ID pemilihan unik ke
SelectionTracker.Builder konstruktor. ID ini diperlukan karena
sebuah 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.
- Aplikasi demo
Sunflower, yang menggunakan
RecyclerView. - Codelab Menggunakan RecyclerView untuk menampilkan daftar yang dapat di-scroll.
- Dasar-Dasar Android Kotlin: Dasar-dasar RecyclerView codelab.