Menyesuaikan daftar dinamis Bagian dari Android Jetpack.
Anda dapat menyesuaikan objek RecyclerView
agar sesuai dengan 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 penampung 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 untuk 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 meningkatkan performa dengan menghindari pembuatan tampilan yang tidak perlu atau melakukan pencarian findViewById()
yang menghabiskan banyak resource. 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, di mana setiap kolom sedikit di-offset dari kolom sebelumnya, seperti bintang dalam 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 mengontrol perilaku pemilihan, seperti item 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 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
. - Menerapkan
ItemDetailsLookup
. - Perbarui objek item
View
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 diperlukan.
- Rangkai semuanya dengan
SelectionTracker.Builder
. - Sertakan pilihan dalam peristiwa siklus proses aktivitas.
ItemDetailsLookup
memungkinkan library pemilihan mengakses informasi tentang item RecyclerView
dengan memperhitungkan MotionEvent
. Secara efektif, ini adalah factory untuk instance ItemDetails
yang ditunjang 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 menunjukkannya kepada pengguna dan menyediakan tindakan untuk pilihan tertentu. Misalnya, Anda dapat menambahkan tombol hapus ke panel ActionMode
dan menghubungkan panah mundur di panel tersebut untuk menghapus pilihan. Saat pilihan 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 langkah-langkah di atas:
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 membuat instance SelectionTracker
, masukkan instance tersebut ke RecyclerView.Adapter
Anda. Jika tidak, Anda tidak dapat memeriksa status item yang dipilih dari metode onBindViewHolder()
.
Agar status pemilihan bertahan di sepanjang peristiwa siklus proses aktivitas, aplikasi Anda harus memanggil metode onSaveInstanceState()
dan onRestoreInstanceState()
di 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 mengetahui informasi tambahan.
- Aplikasi demo Sunflower, yang menggunakan
RecyclerView
. - Gunakan RecyclerView untuk menampilkan daftar yang dapat di-scroll codelab.
- Codelab Dasar-Dasar Android Kotlin: Dasar-dasar RecyclerView.