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 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 khusus, Anda dapat mengubah perilaku standar dengan 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 mungkin 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 perlu atau melakukan
pencarian
findViewById()
yang mahal. Android Support Library menyertakan tiga pengelola tata letak standar,
yang masing-masing menawarkan banyak opsi penyesuaian:
LinearLayoutManager: mengatur item dalam daftar satu dimensi. PenggunaanRecyclerViewdenganLinearLayoutManagermenyediakan fungsi seperti tata letakListView.GridLayoutManager: mengatur item dalam petak dua dimensi, seperti kotak di papan catur. MenggunakanRecyclerViewdenganGridLayoutManagermenyediakan fungsi seperti tata letakGridView.StaggeredGridLayoutManager: mengatur item dalam petak dua dimensi, dengan setiap kolom sedikit diimbangi dari kolom sebelumnya, seperti bintang pada bendera Amerika.
Jika pengelola tata letak ini tidak sesuai dengan kebutuhan, Anda dapat membuat pengelola tata letak sendiri dengan
memperluas
class abstrak
RecyclerView.LayoutManager.
Menambahkan animasi item
Setiap kali item berubah, RecyclerView 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 berikut:
- Tentukan jenis kunci pilihan yang akan digunakan, lalu buat
ItemKeyProvider.Ada tiga jenis kunci yang dapat Anda gunakan untuk mengidentifikasi item yang dipilih:
Parcelabledan subclass-nya, sepertiUriStringLong
Untuk mengetahui informasi mendetail tentang jenis kunci pilihan, lihat
SelectionTracker.Builder. - Terapkan
ItemDetailsLookup. - Perbarui objek item
ViewdiRecyclerViewuntuk mencerminkan apakah pengguna memilih atau membatalkan pilihan item tersebut.Library pilihan 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. - Perbarui gaya tampilan untuk menunjukkan status yang diaktifkan. Sebaiknya gunakan resource daftar status warna untuk mengonfigurasi gaya visual.
- Di
- Gunakan
ActionModeuntuk memberi pengguna alat untuk melakukan tindakan pada pilihan. - Melakukan tindakan sekunder yang diinterpretasikan.
- Rakit semuanya dengan
SelectionTracker.Builder. - Sertakan pilihan dalam peristiwa siklus proses aktivitas.
ItemDetailsLookup memungkinkan library pilihan mengakses
informasi tentang item RecyclerView yang diberi
MotionEvent.
Class ini secara efektif merupakan factory untuk instance ItemDetails yang dicadangkan oleh, atau diekstrak dari, instance RecyclerView.ViewHolder.
Daftarkan
SelectionTracker.SelectionObserver
untuk diberi tahu saat pilihan berubah. Saat pilihan pertama kali dibuat,
mulai ActionMode untuk menampilkan pilihan ini kepada pengguna dan memberikan
tindakan khusus pilihan. Misalnya, Anda dapat menambahkan tombol hapus ke panel
ActionMode dan menghubungkan panah kembali di panel untuk menghapus
pilihan. Jika pilihan menjadi kosong—jika pengguna menghapus
pilihan terakhir kali—hentikan mode tindakan.
Di akhir pipeline pemrosesan peristiwa, library mungkin menentukan
bahwa pengguna mencoba mengaktifkan item, dengan mengetuknya, atau
mencoba menarik item atau kumpulan 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
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
instance SelectionTracker, injeksikan ke
RecyclerView.Adapter Anda. Jika tidak, Anda tidak dapat memeriksa status item yang dipilih dari metode onBindViewHolder().
Untuk mempertahankan status pilihan di seluruh peristiwa siklus proses aktivitas, aplikasi Anda
harus memanggil metode
onSaveInstanceState()
dan
onRestoreInstanceState()
pelacak pilihan dari metode
onSaveInstanceState()
dan
onRestoreInstanceState()
aktivitas. Aplikasi Anda juga harus menyediakan ID pilihan unik untuk
konstruktor SelectionTracker.Builder. ID ini diperlukan karena
aktivitas atau fragmen mungkin memiliki lebih dari satu daftar berbeda 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.
- Codelab Dasar-Dasar Android Kotlin: Dasar-dasar RecyclerView.