Menyesuaikan daftar dinamis Bagian dari Android Jetpack.
Anda dapat menyesuaikan
RecyclerView
objek untuk memenuhi
kebutuhan spesifik Anda. Class standar yang dijelaskan di
Buat daftar dinamis dengan
RecyclerView menyediakan semua fungsi yang dibutuhkan 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 tidak lagi
terlihat oleh pengguna. Untuk menggunakan kembali—atau mendaur ulang—tampilan, tata letak
mungkin meminta adaptor untuk mengganti konten tampilan dengan
elemen yang berbeda dari {i>dataset<i}. 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
: mengatur item dalam daftar satu dimensi. MenggunakanRecyclerView
denganLinearLayoutManager
memberikan fungsionalitas sepertiListView
tata letak.GridLayoutManager
: mengatur item dalam kisi-kisi dua dimensi, seperti persegi pada papan catur. MenggunakanRecyclerView
denganGridLayoutManager
menyediakan fungsi sepertiGridView
tata letak.StaggeredGridLayoutManager
: mengatur item dalam kisi-kisi dua dimensi, dengan setiap kolom sedikit diimbangi dari yang sebelumnya, seperti bintang-bintang di bendera Amerika.
Jika pengelola tata letak ini tidak sesuai dengan kebutuhan Anda, Anda dapat membuatnya 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
Tujuan
recyclerview-selection
library memungkinkan pengguna memilih item dalam daftar RecyclerView
menggunakan sentuhan
atau input mouse. Ini memungkinkan Anda tetap memegang kendali atas presentasi visual dari
item yang dipilih. Anda juga dapat mempertahankan kontrol atas kebijakan yang mengontrol pilihan
perilaku pelanggan, 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 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 pilihan, lihat
SelectionTracker.Builder
. - Terapkan
ItemDetailsLookup
. - Perbarui item
View
objek diRecyclerView
untuk menunjukkan apakah pengguna memilih atau membatalkan pilihan tersebut.Library pilihan tidak menyediakan dekorasi visual default untuk item yang dipilih. Berikan hal ini saat Anda menerapkan
onBindViewHolder()
. Kami merekomendasikan pendekatan berikut:- Dalam
onBindViewHolder()
, panggilsetActivated()
—bukansetSelected()
—aktif objekView
dengantrue
ataufalse
, bergantung pada apakah item dipilih. - Perbarui gaya tampilan untuk menunjukkan status yang diaktifkan. Rab sarankan gunakan status warna daftar resource untuk mengonfigurasi gaya.
- Dalam
- Gunakan
ActionMode
untuk menyediakan pengguna dengan alat untuk melakukan aksi pada pilihan. - Melakukan tindakan sekunder apa pun yang ditafsirkan.
- Susun semuanya dengan
SelectionTracker.Builder
. - Sertakan pilihan di aktivitas siklus proses Anda.
ItemDetailsLookup
memungkinkan akses library pemilihan
informasi tentang RecyclerView
item dengan
MotionEvent
.
Pada dasarnya Cloud adalah
pabrik untuk
ItemDetails
yang didukung oleh, atau diekstrak dari,
RecyclerView.ViewHolder
di instance Compute Engine.
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
Batang ActionMode
dan menghubungkan panah kembali pada batang untuk menghapus
yang dipilih. Saat pilihan kosong—jika pengguna menghapus
pilihan terakhir kali—menghentikan mode tindakan.
Di akhir pipeline pemrosesan peristiwa, library dapat menentukan
bahwa pengguna mencoba mengaktifkan item, dengan mengetuknya, atau sedang
mencoba menyeret sebuah item atau sekumpulan item yang dipilih. Respons interpretasi
ini dengan mendaftarkan pemroses yang sesuai. Untuk selengkapnya
informasi, 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
SelectionTracker
aplikasi Anda harus menyediakan
RecyclerView.Adapter
yang Anda gunakan untuk menginisialisasi RecyclerView
agar
SelectionTracker.Builder
. Oleh karena itu, setelah Anda membuat
SelectionTracker
, masukkan ke dalam
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 berbeda yang dapat dipilih,
yang semuanya perlu dipertahankan
dalam status tersimpan mereka.
Referensi lainnya
Lihat referensi berikut untuk informasi tambahan.
- Bunga Matahari
aplikasi demo, yang menggunakan
RecyclerView
. - Penggunaan RecyclerView untuk menampilkan codelab daftar yang dapat di-scroll.
- Android Codelab Dasar-Dasar Kotlin: Dasar-dasar RecyclerView.