Tasarım Kodlama

Android ListView ile BaseAdapter Kullanımı

ListView, dikey olarak kaydırılabilir öğelerin bir listesini görüntüleyen bir ViewGroup‘tur. Liste öğeleri, dizi veya veritabanı sorgusu gibi bir kaynağa bağlı bir bağdaştırıcı kullanılarak otomatik olarak listeye eklenir ve her öğe ListView‘de bir satıra dönüştürülür.

BaseAdapter

BaseAdapter, adından da anlaşılacağı gibi, Android’deki pek çok somut adaptör uygulaması için temel sınıftır. Soyuttur ve bu nedenle doğrudan somutlaştırılamaz.

Veri kaynağınız bir ArrayList veya dizi ise, alternatif olarak ArrayAdapter yapısını da kullanabiliriz. ArrayAdapter’ın kendisinin BaseAdapter’dan genişlediğini unutmayın.

BaseAdapter Kullanımı

BaseAdapter‘ı bir ListView ile kullanmak için, aşağıdaki metotları uygulayan BaseAdapter sınıfının somut bir uygulaması oluşturulmalıdır.

  • int getCount()
  • Object getItem(int position)
  • long getItemId(int position)
  • View getView(int position, View convertView, ViewGroup parent)

Özel BaseAdapter uygulamamızı oluşturmadan önce, ListView satırının düzenini ve ayrıca ListView‘deki öğeler için bir model oluşturmamız gerekiyor.

Model Sınıfı Oluşturma

ListView‘de her bir satır bir kişi öğesi içermektedir. u nedenle Model sınıfımız aşağıdaki gibidir.

Kisi.java

Kisi.kt

Layout Oluşturma

Uygulamayı kullanan main_activity.xml ve listview_item XML dosyalarını aşağıdaki gibidir.

mian_activity.xml

listview_item.xml

Custom BaseAdapter Oluşturma

CustomListAdapter.kt

CustomListAdapter.java

Custom Adapter Kullanma

Adapter(Bağdaştırıcı), gerekli parametrelerle somutlaştırılarak ve liste görünümünün bağdaştırıcısı olarak ayarlanarak basitçe kullanılabilir.

MainActivity.java

MainActivity.kt

ListView Optimizasyonu

Liste görünümünün performansını optimize etmek için, yeni bir satır düzeni yalnızca convertView == null olduğunda şişirilmelidir. Bunun nedeni, liste görünümünün ekranda yeni bir satır göstermesi gerektiğinde adaptörün getView yönteminin çağrılmasıdır. convertView bu süreçte geri dönüştürülür. Bu nedenle, convertView == null olduğunda satır düzeni yalnızca bir kez şişirilmelidir ve her çağrıda çok pahalı olan yeni bir satırı şişirmek yerine, sonraki getView çağrılarında içeriği güncellenmelidir.

Yorum yap