Kiat untuk penggunaan profesional RecyclerView. Bagian 1

Kiat untuk penggunaan profesional RecyclerView. Bagian 1


Saya memutuskan untuk menulis artikel ini karena memperhatikan bahwa banyak pengembang membuat kesalahan ketika menggunakan RecyclerView , meskipun Google telah merilisnya beberapa waktu yang lalu.


Poin-poin yang dijelaskan di sini disebutkan dalam berbagai laporan dan materi di Google Devs.


Dalam artikel ini, saya akan menjelaskan secara singkat poin-poin penting dari video ini , dan Anda tidak harus menontonnya sekarang. Tapi saya sarankan menontonnya secara keseluruhan setelah membaca artikel.


1. atribut setHasFixedSize


Setel atribut recyclerView.setHasFixedSize(true) ketika recyclerView tidak berencana mengubah ukuran anak-anaknya secara dinamis.


Akibatnya, recyclerView tidak akan digambar ulang setiap kali data diperbarui dalam item daftar, item ini digambar ulang sendiri.


2. Klik pendengar


Tetapkan handler klik di onCreateViewHolder(...) .


Setiap kali pengguna mengklik item daftar, viewHolder melaporkan posisi adaptor tempat klik ini terjadi ( vh.getAdapterPosition() ). Ini penting karena elemen dapat dipindahkan di dalam adaptor, dan komponen view terkait tidak akan dibuat kembali.


Akibatnya, pada saat komponen view dibuat, hal berikut mungkin terjadi: item daftar akan, katakanlah, di posisi 2, tetapi ketika pengguna mengkliknya, elemen sudah berada di posisi 5. Dengan demikian, menggunakan metode vh.getAdapterPosition() menjamin mendapatkan indeks daftar yang benar.


3. Menggunakan berbagai jenis komponen tampilan


Kembalikan layout secara langsung jika Anda menggunakan berbagai jenis komponen view (misalnya, R.layout.view_one ).


Jika adaptor Anda mendukung berbagai jenis komponen view , metode getItemViewType dan onCreateViewHolder akan terlihat seperti gambar di bawah ini. Anda perlu menulis switch di dalam metode onCreateViewHolder untuk menerapkan logika yang diperlukan untuk jenis komponen view sesuai.


GetItemViewType dan onCreateViewHolder standar


Tetapi alih-alih jenis ini, Anda dapat langsung mengembalikan layout . Ini akan menyelamatkan Anda dari kode boilerplate di onCreateViewHolder :


Diunggah diCreateViewHolder


Teknik ini tidak bisa digunakan terus-menerus, karena terkadang Anda mungkin memerlukan logika yang lebih kompleks di dalam setiap layout dipilih untuk kasus yang berbeda. Tetapi jika ini bukan kasus Anda, maka layout dikembalikan adalah cara yang tepat untuk bekerja dengan berbagai jenis komponen view .


4. Sulit


Gunakan DiffUtil untuk menambahkan data baru ke RecyclerView .


Setiap kali data dalam perubahan recyclerView , kebanyakan pengembang memanggil metode notifyDataSetChanged() untuk menampilkan data yang diperbarui pada UI. Mereka sama sekali tidak tahu bahwa metode ini intensif sumber daya, dan bahwa di sinilah DiffUtil menangani jauh lebih efisien.


DiffUtil adalah kelas utilitas yang dapat menghitung perbedaan antara dua daftar sebagai daftar pembaruan, yang kemudian mengubah daftar pertama menjadi yang kedua. Ini dapat digunakan untuk menghitung pembaruan dalam adaptor recyclerView . Untuk menggunakan DiffUtil , Anda harus mengimplementasikan DiffUtil.Callback , yang memiliki beberapa metode yang diperlukan untuk mengimplementasikan logika DiffUtil :


Metode Publik DiffUtil.Callback


Keuntungan terbesar dari DiffUtil adalah bahwa di RecyclerView Anda dapat memperbarui teks tertentu di TextView elemen tertentu, alih-alih menggambar ulang seluruh daftar. Untuk melakukan ini, Anda perlu menerapkan metode DiffUtil.Callback di DiffUtil.Callback . Ada artikel yang sangat bagus tentang hal ini.


Pada bagian kedua, kita RecyclerView melihat kiat-kiat lain untuk memanfaatkan RecyclerView .


β†’ Kiat untuk penggunaan profesional RecyclerView. Bagian 2

Source: https://habr.com/ru/post/id425945/


All Articles