Custom Array Adapter Nasıl Yazılır? – 2

Bu örneğimizde satırında resim içeren bir ListView kullanarak Custom Adapter yazacağız.

Öncelikle aktivitemizin görseli olan XML dosyamızda bir ListView ekleyerek başlıyor ve id veriyoruz.

Ekranımızda sadece ListView olacağı için ana şablonuzun tipi önemli değildir. (Bu örnekte LinearLayout kullanılıyor.)

Aktivitemizin Java dosyasında ListView’i deklare edip, id’si ile tanıtıyoruz.

Bir önceki konuda anlattığımız gibi Adapter için bir kalıp oluşturuyoruz.

  • Satır görsel tasarımı bir ImageView ile bir TextView’den oluşmaktadır.

Daha sonra buna göre veri listemizde yer alacak nesnelerin ait olduğu sınıfı tanımlayacağız. Bu sınıfın ismi “Ulke” olsun. Bu sınıfta kayıtlı resmi temsil eden, kaynak etiketi (resource id) adı verilen bir tamsayı değişkeni ve ülkenin adını temsil eden bir String değişkeni olacaktır.

Uygulamada kullanılacak resim dosyalarını projemizdeki drawable klasörüne eklememiz gerekir.

Telif hakları nedeniyle yazı ile beraber burada ulke resimlerini paylaşamıyorum. Dileyen arkadaşlar internetten bu resimleri elde edebildiği gibi bu adresten de indirip projelerine dahil edebilir.

Artık veri listemizi oluşturup, ülke bayrağı resminin id’si ve ülke adı ile Ulke nesneleri oluşturup, listeye ekleyebiliriz.

Satır tasarımını da kendimiz yaptığımız için, ArrayAdapter alt sınıfı olan özel(custom) bir adaptör tanımlamamız gerekir.

Adaptör sınıfımızda; veri listemizdeki nesnelerin içeriklerini, satırdaki görsellere yerleştirip, satır nesnesi(convertView) döndürmek için getView metoduna örtme (override) işlemi yapacağız.

Burada önceki örneklerden farklı olarak ImageView yer almaktadır. ImageView içinde resmi göstermek için setImageResource() metodunu resim id’si ile kullanırız.

Daha sonra Aktivitemizin java dosyasında artık tanımladığımız UlkeAdaptor sınıfından bir adaptör nesnesi oluşturup listView’e atayabiliriz(set).

Son olarak uygulamayı daha etkileşimli(interaction) kılmak için birkaç özellik daha ekleyebiliriz.

Uygulamada ListView’e bir dinleyici atayabiliriz. Tek görseli dinlemek için View.OnClickListener arayüzünü kullanıyorduk. ListView’deki satırları (item) dinlerken ise View.OnItemClickListener arayüzünü kullanacağız.

Bu arayüz gördüğünüz gibi onItemClick isimli bir metoda sahiptir. Bu metodun içeriğini tanımlayacağız(override).

Toast mesajı mobil uygulamalarda sıklıkla kullanılan bir mesaj tipidir. Bu mesaj geri bildirim için belirli bir süre ekranda görülüp, sonra kaybolan bir yapıdadır. Örnek uygulamamızda tıklanan satıra ilişkin ülkenin adını Toast mesajıyla gösterdik.

  • Bunun için onItemClick metodunun position isimli parametresini kullanırız. Bu tamsayı değeri tıklanan satırın sırasını temsil etmektedir.
  • position sıra değeri ile, tıklanan satıra ilişkin veri listemizdeki nesneye ulaşabiliriz. Bu örnekte bu eleman bir Ulke nesnesidir.
  • Toast.makeText ile bir Toast mesajı oluştururuz. Bizden beklenen parametre sırayla; Context (MainActivity.this), görüntülemek istediğimiz mesaj (String ifade) ve gösterim süresidir (Toast.LENGTH_LONG ise 3 saniye).
  • Toast mesaj nesnesinin sonunda da .show() metodunu çağırarak mesajımızı gösterebiliriz.

Sonuçta bir satıra tıklandığında, listemizdeki aynı sıradaki Ulke nesnesine erişip, bu nesnenin ulkeAdi ozelliğini Toast mesajıyla yazdırmış olduk.

Mesajın daha kısa süre gösterilmesi için süre özelliğini LENGTH_SHORT yapabilirdik (2saniye).

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir