ViewHolder Pattern di Android

Berawal dari rasa penasaran, kenapa ViewHolder pattern ini sering digunakan pada banyak aplikasi yang menampilkan ListView di Android, akhirnya saya menemukan alasannya. Yaitu untuk meningkatkan performa dari ListView dengan AdapterViews di Android. Postingan ini merupakan seri lanjutan dari pembahasan sebelumnya, dimana pada pattern ini AdapaterViews menggunakan Adapter untuk mendaur ulang tampilan yang ada di AdapaterView agar konten otomatis diperbaharui ketika dibutuhkan.

AdapterView
AdapterView

Jika kita membuat aplikasi android dengan ListView tanpa menggunakan ViewHolder, salah satu masalah terbesarnya performa dan efisiensi. Karena cara kerja dasar ListView tanpa ViewHolder ini akan melakukan pemanggilan berulang untuk setiap item data menggunakan findViewById(). Yang artinya ini sangat mempengaruhi performa dari aplikasi saat meload data. Gampangnya gini, misalnya ketika Adapter mengembalikan nilai untuk di tampilkan, kita harus melakukan pencarian “by Id” untuk elemen yang baru agar terus update secara terus menerus.

 

Music List ViewOptimasi

Contoh lainnya adalah saat kita mengembangkan aplikais music, dimana akan ada banyak track list musik yang akan di tampilkan menggunakan listview. Tanpa menggunakan ViewHolder tentunya akan membuat aplikais crash karena harus mengulang terus menerus pencarian by id untuk setiap track musik yang ada, dan tentunya track list musik itu rata-rata di atas 100.

Penggunaan ViewHolder pattern adalah tentang pengurangan pemanggilanan findViewById() pada method getView(). Karena pada method ini lah data di load dari model untuk ditampilkan pada viewnya aplikasi.

 

Let’s Code ..

Berikut salah satu contoh code pembuatan  class ViewHolder untuk optimasi ListView:

Well mungkin cukup sekian pembahasan sederhana kali ini, semoga bermanfaat …


Referensi :

Iklan

Satu pemikiran pada “ViewHolder Pattern di Android

Good People write good comments ..

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s