Android Custom Listview Yapımı (Json ile)- Yazılımcı Aklı

Android Custom Listview

Yayın tarihi : 25 Ocak 2017

Listview Nedir?

Listview nesnesi, mevcut veri setlerinizin kullanıcıya gösterilmesinde yardımcı olan bir nesnedir. Ancak default olarak listview nesneleri text olarak göstermeye programlıdır. Bu yüzden listviewleri özelleştirmek gerekir. Peki bunu nasıl yaparız?

Listview Özelleştirme

Listviewler sadece text biçiminde görüntüleme yapmak için ayarlanmıştır ve bunu özelleştirmek mümkündür. Bunun için listview’in her satırın nasıl görünmesini istiyorsanız onu ayarlamanıza yarayacak bir layout ayarlamaktır. Layout içerisinde eklediğimiz nesnelerin kontrolü için birde kontrol java dosyası oluşturmalıyız.

Olayımıza basit bir örnek ile devam edelim. İçerisinde kapak resmi, başlık ve kısa bir açıklama bilgisi olan bir json dosyamızın olduğunu varsayalım. Android json parse olayına girmeyeceğim zira daha önceki konularımızda bundan bahsetmiştik. Bu yüzden json dosyasını parse ettiğimizi ve verileri aldığımızı varsayıyoruz.

Öncelikle json dosyamızın içeriğine bir göz atalım.

data.json

Json dosyamızda title değişkeni başlık, description kısa açıklama cümleciği ve son olarak image alanı resim url bilgimizi bize gösteren değişkendir. Bu değişken isimleri önemli nedeni ise volley ve gson ile veri çekerken oluşturulan class‘ta birebir kullanılıyor olması.

Şimdi ise projemizde activity_main.xml (yada hani layoutu kullanıyorsanız) dosyasını ayarlayalım. Örneğimizde sadece listview kullanacağız.

activity_main.xml

Şimdi ise listviewimizi özelleştireceğiz, bunu yapmak için yeni bir layout oluşturun ve adını mylistview olarak düzeltip içeriğini aşağıdaki gibi tasarlayın.

Burada yapılan düzenlemeler ileride yazacağımız kodlarda bazı yerlerin değiştirilmesini gerektirir

mylistview.xml

Yukarıda ki uyarıda da gördüğünüz gibi bu sayfada yaptığınız id değişiklikleri ve nesne değişiklikleri bu sayfayı yöneteceğimiz java dosyasında da değişikliği gerektirir.

Json Parse işlemlerini gson kullanarak yapacağız. Detaylı anlatım için bu konuyu takip edebilirsiniz. O yüzden o işlemlerin nasıl yapıldığını anlatmadan geçiştiriyoruz.

MainActivty.java onResume() fonksiyonu

Önemli Not: listeAdapter dizisi json verisini bir bütün olarak alır ancak bize başlıklar, açıklamalar ve resimler olarak özelleştirilmiş şekilde olması gerektiği için for döngüsüne aldık. listAdapter.getCount() bize dizinin boyutunu verdiği için her dizi eşit boyutlu olmuş oldu. Yani title[0], dscpt[0], image[0] dizi elemanları ayrıca listeAdapter.getItem(0) değerinin bölünmüş şeklidir.

Şimdi ise CustomLV olarak içerisine böldüğümüz dizileri yolladığımız classı hazırlayalım. Bu class ile mylistview.xml içerisindeki elemanlara ulaşacağız ve değerlerimizi istediğimiz nesneye atamış olacağız.

CustomLV.java

Sonuç

ImageView nesnesi gönderdiğiniz url değerlerini direk olarak gösteremiyor. Bu nedenle url den gelen resim bitmap olarak tanımlanması ve ona göre imageview e atılması gerekir.

Kaynak kodu indirmek için Tıklayınız

custom listview