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. Di beberapa
dalam banyak kasus, Anda hanya perlu mendesain tampilan untuk setiap view holder dan menulis
kode untuk memperbarui tampilan tersebut dengan data yang sesuai. Namun, jika aplikasi Anda memiliki
persyaratan spesifik, Anda dapat memodifikasi
perilaku standar dalam beberapa cara.
Dokumen ini menjelaskan beberapa kemungkinan penyesuaian.
Mengubah tata letak
RecyclerView
menggunakan pengelola tata letak untuk memosisikan individu
item di layar dan untuk menentukan kapan harus menggunakan kembali tampilan item yang sudah 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. Pendaurulangan meningkat dengan cara ini
performa dengan menghindari pembuatan tampilan yang tidak perlu atau
mahal
findViewById()
pencarian. Android Support Library menyertakan tiga pengelola tata letak standar,
yang menawarkan banyak opsi penyesuaian:
LinearLayoutManager
: menyusun item dalam daftar satu dimensi. MenggunakanRecyclerView
denganLinearLayoutManager
memberikan fungsionalitas sepertiListView
tata letak.GridLayoutManager
: menyusun item dalam petak dua dimensi, seperti persegi di papan catur. MenggunakanRecyclerView
denganGridLayoutManager
menyediakan fungsi sepertiGridView
tata letak.StaggeredGridLayoutManager
: menyusun item dalam petak dua dimensi, dengan setiap kolom sedikit di-offset dari kolom sebelumnya, seperti bintang di bendera Amerika.
Jika {i>layout manager<i} ini tidak sesuai dengan kebutuhan Anda, Anda dapat membuat {i>layout<i} sendiri dengan
memperluas
RecyclerView.LayoutManager
abstrak.
Menambahkan animasi item
Setiap kali item berubah, RecyclerView
menggunakan animator
untuk mengubah penampilannya. Animator ini adalah objek yang memperluas abstrak
RecyclerView.ItemAnimator
. 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
sentuh atau mouse. Ini memungkinkan Anda tetap memegang kendali atas presentasi visual dari
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 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
. - Terapkan
ItemDetailsLookup
. - Perbarui objek
View
item diRecyclerView
untuk menunjukkan apakah pengguna memilih atau membatalkan pilihannya.Library pilihan tidak menyediakan dekorasi visual default untuk item yang dipilih. Berikan hal ini saat Anda menerapkan
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 memberikan alat kepada pengguna untuk melakukan tindakan atas pilihan. - Lakukan tindakan sekunder apa pun yang ditafsirkan.
- Susun semuanya dengan
SelectionTracker.Builder
. - Sertakan pilihan dalam peristiwa siklus proses aktivitas.
ItemDetailsLookup
memungkinkan akses library pemilihan
informasi tentang RecyclerView
item dengan
MotionEvent
.
Secara efektif, ini adalah 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 ini kepada pengguna dan memberikan
tindakan tertentu untuk setiap 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 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 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
SelectionTracker
, masukkan ke dalam instance
RecyclerView.Adapter
. Jika tidak, Anda tidak dapat memeriksa
status yang dipilih dari metode onBindViewHolder()
.
Untuk mempertahankan status pemilihan di seluruh peristiwa siklus proses aktivitas, aplikasi Anda
harus memanggil nomor
onSaveInstanceState()
dan
onRestoreInstanceState()
dari metode aktivitas
onSaveInstanceState()
dan
onRestoreInstanceState()
masing-masing. Aplikasi Anda juga harus memberikan 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
. - Penggunaan RecyclerView untuk menampilkan codelab daftar yang dapat di-scroll.
- Codelab Dasar-Dasar Android Kotlin: Dasar-dasar RecyclerView.