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 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 waktu untuk 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 seperti ini dapat meningkatkan
performa dengan menghindari pembuatan tampilan yang tidak perlu atau melakukan
pencarian
findViewById()
yang mahal. Android Support Library menyertakan tiga pengelola tata letak standar,
salah satunya menawarkan banyak opsi penyesuaian:
LinearLayoutManager
: mengatur item dalam daftar satu dimensi. PenggunaanRecyclerView
denganLinearLayoutManager
menyediakan fungsi seperti tata letakListView
.GridLayoutManager
: mengatur item dalam petak dua dimensi, seperti persegi di papan catur. PenggunaanRecyclerView
denganGridLayoutManager
menyediakan fungsi seperti tata letakGridView
.StaggeredGridLayoutManager
: mengatur 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, Anda dapat membuatnya 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 Anda sendiri dengan memperluas
RecyclerView.ItemAnimator
.
Mengaktifkan pilihan item daftar
Library
recyclerview-selection
memungkinkan pengguna memilih item dalam daftar RecyclerView
menggunakan input
sentuhan atau mouse. Hal ini memungkinkan Anda tetap dapat mengontrol 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 jumlah 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:
Parcelable
dan subclass-nya, sepertiUri
String
Long
Untuk mengetahui informasi mendetail tentang jenis kunci pemilihan, lihat
SelectionTracker.Builder
. - Implementasikan
ItemDetailsLookup
. - Perbarui objek
View
item diRecyclerView
untuk menunjukkan apakah pengguna memilih atau membatalkan pilihannya.Library pemilihan tidak menyediakan dekorasi visual default untuk item yang dipilih. Berikan informasi ini saat Anda mengimplementasikan
onBindViewHolder()
. Kami merekomendasikan pendekatan berikut:- Di
onBindViewHolder()
, panggilsetActivated()
—bukansetSelected()
—pada objekView
dengantrue
ataufalse
, 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
ActionMode
untuk memberi pengguna alat untuk melakukan tindakan atas pilihan. - Melakukan tindakan sekunder apa pun yang ditafsirkan.
- Susun semuanya dengan
SelectionTracker.Builder
. - Sertakan pilihan dalam peristiwa siklus proses aktivitas.
ItemDetailsLookup
memungkinkan library pemilihan mengakses
informasi tentang item RecyclerView
dengan mempertimbangkan
MotionEvent
.
Secara efektif, ini adalah factory untuk instance ItemDetails
yang didukung oleh, atau diekstrak dari, instance RecyclerView.ViewHolder
.
Daftarkan
SelectionTracker.SelectionObserver
untuk menerima notifikasi saat pilihan berubah. Saat pilihan pertama kali dibuat,
mulai ActionMode
untuk menampilkannya kepada pengguna dan menyediakan
tindakan untuk pilihan tertentu. Misalnya, Anda dapat menambahkan tombol hapus ke panel ActionMode
dan menghubungkan panah kembali di panel tersebut untuk menghapus pilihan. Saat pilihan kosong—jika pengguna menghapus
pilihan untuk terakhir kalinya—hentikan mode tindakan.
Di akhir pipeline pemrosesan peristiwa, library dapat menentukan
bahwa pengguna mencoba mengaktifkan item, dengan mengetuknya, atau
mencoba menarik satu atau sekumpulan item yang dipilih. Respons interpretasi
ini dengan mendaftarkan pemroses yang sesuai. Untuk informasi
selengkapnya, lihat
SelectionTracker.Builder
.
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 melakukan inisialisasi RecyclerView
ke
SelectionTracker.Builder
. Karena alasan ini, setelah Anda membuat instance SelectionTracker
, masukkan instance tersebut ke dalam RecyclerView.Adapter
. Jika tidak, Anda tidak dapat memeriksa status
item yang dipilih dari metode onBindViewHolder()
.
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, masing-masing. 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 tersimpan.
Referensi tambahan
Lihat referensi berikut untuk informasi tambahan.
- Aplikasi demo
Sunflower, yang menggunakan
RecyclerView
. - Menggunakan RecyclerView untuk menampilkan daftar yang dapat di-scroll.
- Codelab Dasar-Dasar Android Kotlin: Dasar-dasar RecyclerView.