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 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 kapan harus 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 dengan cara ini akan meningkatkan
performa dengan menghindari pembuatan tampilan yang tidak diperlukan atau melakukan
pencarian
findViewById()
yang mahal. Android Support Library menyertakan tiga pengelola tata letak standar,
yang semuanya 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
akan menyediakan fungsi seperti tata letakGridView
.StaggeredGridLayoutManager
: menyusun 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 dapat membuatnya sendiri dengan
memperluas
class abstrak
RecyclerView.LayoutManager
.
Menambahkan animasi item
Setiap kali item berubah, RecyclerView
akan 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 ini:
- 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 informasi mendetail tentang jenis kunci pemilihan, lihat
SelectionTracker.Builder
. - Implementasikan
ItemDetailsLookup
. - Update objek
View
item diRecyclerView
untuk menunjukkan apakah pengguna memilih atau membatalkan pilihannya.Library pemilihan tidak menyediakan dekorasi visual default untuk item yang dipilih. Berikan kode ini saat Anda mengimplementasikan
onBindViewHolder()
. Kami merekomendasikan 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 memberi pengguna alat guna melakukan tindakan atas pilihan. - Melakukan tindakan sekunder apa pun yang diperlukan.
- Rangkai semuanya dengan
SelectionTracker.Builder
. - Sertakan pilihan dalam peristiwa siklus proses aktivitas.
ItemDetailsLookup
memungkinkan library pemilihan mengakses
informasi tentang item RecyclerView
yang diberi
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 menampilkan ini kepada pengguna dan menyediakan
tindakan untuk pilihan tertentu. Misalnya, Anda dapat menambahkan tombol hapus ke panel
ActionMode
dan menghubungkan panah kembali pada panel tersebut untuk menghapus
pilihan. Saat pilihan menjadi kosong—jika pengguna menghapus
pilihan untuk terakhir kalinya—hentikan mode tindakan.
Di akhir pipeline pemrosesan peristiwa, library 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 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 menginisialisasi RecyclerView
ke
SelectionTracker.Builder
. Karena alasan ini, setelah Anda membuat
instance SelectionTracker
, masukkan ke
RecyclerView.Adapter
Anda. 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. 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 tersimpannya.
Referensi tambahan
Lihat referensi berikut untuk informasi tambahan.
- Aplikasi demo
Sunflower, yang menggunakan
RecyclerView
. - Gunakan RecyclerView untuk menampilkan daftar yang dapat di-scroll.
- Dasar-Dasar Android Kotlin: Dasar-dasar RecyclerView.