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 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 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 kapan tampilan item yang tidak lagi
terlihat oleh pengguna akan digunakan kembali. 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 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. PenggunaanRecyclerView
denganLinearLayoutManager
menyediakan fungsi seperti tata letakListView
.GridLayoutManager
: menyusun item dalam petak dua dimensi, seperti persegi di papan catur. PenggunaanRecyclerView
denganGridLayoutManager
menyediakan fungsi seperti tata letakGridView
.StaggeredGridLayoutManager
: menyusun item dalam petak dua dimensi, dengan setiap kolom sedikit di-offset dari kolom sebelumnya, seperti bintang di 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 penampilannya. Animator ini adalah objek yang memperluas class
RecyclerView.ItemAnimator
abstrak. 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 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 utama yang dapat Anda gunakan untuk mengidentifikasi item yang dipilih:
Parcelable
dan subclass-nya, sepertiUri
String
Long
Untuk 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 ini saat Anda mengimplementasikan
onBindViewHolder()
. Sebaiknya gunakan pendekatan berikut:- Di
onBindViewHolder()
, panggilsetActivated()
—bukansetSelected()
—pada objekView
dengantrue
ataufalse
, bergantung pada apakah item dipilih. - Perbarui gaya tampilan untuk menunjukkan status yang diaktifkan. Sebaiknya gunakan resource daftar status warna untuk mengonfigurasi gaya.
- Di
- Gunakan
ActionMode
untuk memberikan alat kepada pengguna untuk melakukan tindakan atas pilihan. - Lakukan tindakan sekunder apa pun yang ditafsirkan.
- Rangkai semuanya dengan
SelectionTracker.Builder
. - Sertakan pilihan dalam peristiwa siklus proses aktivitas.
ItemDetailsLookup
memungkinkan library pemilihan mengakses
informasi tentang item RecyclerView
dengan
MotionEvent
.
Secara efektif, ini adalah factory untuk instance
ItemDetails
yang dicadangkan oleh, atau diekstrak dari, instance
RecyclerView.ViewHolder
.
Daftarkan
SelectionTracker.SelectionObserver
untuk menerima pemberitahuan saat pilihan berubah. Saat pilihan dibuat untuk pertama kalinya,
jalankan ActionMode
untuk menampilkannya kepada pengguna dan berikan
tindakan khusus 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.
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
.
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
. Karena alasan ini, setelah membuat
instance SelectionTracker
, masukkan 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 pilihan dari metode
onSaveInstanceState()
dan
onRestoreInstanceState()
aktivitas. Aplikasi Anda juga harus memasukkan 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.
- Aplikasi demo
Sunflower, yang menggunakan
RecyclerView
. - Codelab Menggunakan RecyclerView untuk menampilkan daftar yang dapat di-scroll.
- Codelab Dasar-Dasar Android Kotlin: Dasar-dasar RecyclerView.