RecyclerView Challenge: RecyclerView is Recycleable

How to fix item not consistent in RecyclerView

Yudi Setiawan
Nusanet Developers
5 min readNov 17, 2018

--

RecyclerView

Seperti yang kita tahu bahwa RecyclerView merupakan salah satu view yang sering kita pakai untuk menampilkan data dalam bentuk list baik itu vertical maupun horizontal. Berdasarkan situsnya menyebutkan bahwa RecyclerView memiliki kemampuan untuk menampilkan data yang banyak dan lebih gampang penggunaan-nya daripada ListView.

What’s The Problem

Berikut adalah salah satu problem dari penggunaan RecyclerView jika kita tidak paham bagaimana cara kerja dari si RecyclerView.

Salah satu problem RecyclerView jika kita tidak paham

Jika kita perhatikan dari problem diatas adalah awalnya kita cuma mengisi absensi 5 siswa pertama lalu, kita scroll kebawah dan terus kebawah tapi, kok tiba-tiba saja ada data siswa yang sebelumnya tidak kita isi kok jadi ikut terisi pula sesuai dengan 5 data siswa diawal tadi. Umumnya problem diatas sering kita alami jika kita tidak paham bagaimana sebenarnya cara kerja dari si RecyclerView tersebut.

“Lalu apakah problem diatas merupakan salah satu kelemahan dari si RecyclerView atau memang coding kita yang error?” Jawabannya ialah justru problem diatas adalah salah satu keistimewaan dari si RecyclerView.

Surprised Me

Sesuai dengan namanya yaitu RecyclerView. Jadi, view yang ada dalam RecyclerView akan mengalami Recycler (Daur Ulang) atau bahasa gampangnya bisa dipakai lagi view-nya. Agak aneh ya bahasanya. Gambar berikut akan menjelaskannya.

RecyclerView is Recycleable

Jadi, awalnya screen kita cuma menampilkan 4 item view dan si RecyclerView membuat 4 item view (data 1 s.d. data 4). Lalu, kita scroll dan tampil item view 2 s.d. item view 5 (item view 5 dibuat oleh si RecyclerView) atau data 2 s.d. data 5. Lalu, kita scroll lagi dan tampil item view 3 s.d. item view 6 (item view 6 dibuat oleh si Recyclerview) atau data 3 s.d. data 6. Lalu, kita scroll lagi, muncul item view 4 s.d. 7 (item view 7 merupakan hasil daur ulang dari item view 1) atau data 4 s.d. data 7. Memang view-nya menampilkan data ke berikutnya yang menunjukkan seolah-olah itu terbuat dari awal namun, kenyataannya adalah view-nya merupakan hasil daur ulang dari item view sebelumnya dimana, pada gambar diatas adalah item view 1.

Give Me a Project

Okay, untuk contoh projeknya kita akan membuat aplikasi yang sama persis seperti pada gambar sebelumnya yaitu, menampilkan list data siswa untuk diabsensi.

Silakan buat layout berikut di activity_main.xml

Lalu, kita buat layout untuk si item RecyclerView-nya dan nama file-nya kita namakan item_adapter.xml

Selanjutnya, kita buat file model-nya dengan nama Kehadiran.

Berikutnya, kita buat file adapter-nya dengan nama AdapterAbsensi

And finally, kita set adapter-nya si RecyclerView di file MainActivity

Sekarang silakan coba kita jalankan program diatas maka, hasilnya pasti akan sama seperti problem yang saya jelaskan tadi.

Solution

Untuk solusinya adalah kita bisa pakai attribute setIsRecycleable agar si RecyclerView-nya tidak menggunakan view daur ulang. Silakan tambahkan kode attribute tersebut kedalam method onBindViewHolder .

Sekarang coba jalankan lagi programnya.

RecyclerView is the best

Dan akhirnya terselesaikan juga problem diatas. So give applause for all.

Another Solution

Selain solusi pertama diatas, sebenarnya ada juga solusi lainnya yaitu kita mempertahankan state setiap view-nya didalam model dan solusi yang sebelumnya sebenarnya tidaklah saya rekomendasikan. Untuk solusi dengan odel silakan kita buka file AdapterAbsensi dan ubah menjadi seperti berikut.

--

--