Android — Kotlin RecyclerView Kullanımı

Burakcan SEZGİN
3 min readFeb 22, 2020

--

Merhaba arkadaşlar,

Yeni bir makale ile karşınızdayım. Bu makale de anlatıcak olduğumuz componentimiz RecyclerView. Peki yenilir içilir birşey mi, nedir bu ? Daha önceki makalelerimiz de kekoca veri listeleme örnekleri vermiştik 😏

Bilmiyorum hala kullanan var mı ? Ancak mevzu android temelleriyse Listview’leri görmeden geçmek olmazdı :) O halde ListView’lerin daha gelişmişi olan RecyclerView’den bahsedelim. Günlük hayattan örnekle başlayalım ve karşılaştıralım.

Bir çiftliğinizin olduğunu kabul edelim ve 100 tane küçükbaş hayvanınız var. Bir giriş çıkış kapınız var otlatma zamanı bu kapıdan en fazla yan yana 10 koyun geçebiliyor. Haliyle 10'dan fazla hayvan geçmeye çalıştığında çitler kırılıcak ya da yıkılıcaktır. İşte buradaki benzerlik tam olarak şu;

Elinizdeki data’nın uzunluğunu çoğu zaman bilemezsiniz.Ancak biz diyelim ki elinizde Trendyol, HepsiBurada, Sahibinden uygulamaları üzerinde ürün aramaları yaptığınızda karşınıza neredeyse onbinlerce ürün gelmektedir.Biz 10bin veri geldiğini kabul edelim. Bu verileri sıralı bir şekilde ekranda göstermek istiyorsunuz. ListView ile yaparsanız 10bin ürün tek seferde ekrana çizilmek istenicek ve cihaz ram belleğine göre yeterli ama performanssız ya da yetersiz olucak memoryLake(yetersiz memory alanına) sebep olucak. Öyle ya da böyle zararı dokunucak demektir. Tam işte burada RecyclerView kendisini gösteriyor.

Diyor ki hey Keko buraya bak !

Ben senin 10bin verin için ekranda gözüktüğüm kadar yer kaplarım…

( 2top+Ekran+2bottom )

Yani bu şu demek oluyor ekrana sığan ürün sayısı + 2 ekranın üstünden +2 ekranın altında veri tutacak kadar ram’da yer kaplarım. Bu da hem açılışta hem de ürün listelemede oldukça performans kaybını önleyecektir. O halde hadi bir RecyclerView örneği yapalım;

Öncelikle bir RecylerView oluşturmak için temelde 3 şeye ihtiyaç vardır.

  • Adapter
  • LayoutManager
  • ViewHolder

RecyclerView, verileri konumlandırmak için , bir LayoutManager yapısına ihtiyaç duyulmaktadır. Kendimiz bir LayoutManager tanımlayacabileceğimiz gibi, LayoutManager‘ın kendi alt sınıflarını da kullanabiliriz. Bu alt sınıflar şunlardır;

  • LinearLayoutManager: Verilerin yatay veya dikey eksende görülmesini sağlar.
  • GridLayoutManager: Verilerin bizim belirlediğimiz satır ve sütun sayısı içinde görüntülenmesini sağlar.
  • StaggeredGridLayoutManager: Verilerin görünüm boyutlarını bizim belirlediğimiz şekilde görüntülenmesini sağlar.

RecylerView temelde aşağıdaki şemadaki gibi çalışırlar. Adapter verileri işler, düzenler ve LayoutManager yardımıyla ekrana nasıl çizileceği söylenir.

Haydi o zaman sıra kodlamaya…

Örnek proje çıktısı

Öncelikle piyasa da ki projelerde kullanılan package yapımızı hazırlayalım. İhtiyacımız olanlar;

packages

Projeye kütüphaneler dahil edilir.

(build.gradle (Module: app) içinde dependencies kısmına eklenir.)

implementation 'androidx.recyclerview:recyclerview:1.1.0'
implementation 'androidx.cardview:cardview:1.0.0'

Package oluşturmayı biliyorsunuz olarak kabul ediyorum ancak bilmeyenler içinde yardımcı olması için bir görsel paylaşacağım.

Java altında bulunan package klasörüne sağ tıklayıp bu ekrandan Package seçerek isim verip oluşturabilirsiniz.

Adapter Package için new Kotlin Class’ı seçip Adapter.kt oluşturalım.

Holder Package içine new Kotlin Class’ı MyViewHolder.kt oluşturalım.

row_item_list.xml

acitivity_main.xml

data class

mockData class

Kısaca özetlemek gerekirse;

Servisten ya da örnekteki gibi mockData’dan dönen veriler dahilinde adapter, bu verileri ekrana çizer ve bunu performanslı şekilde ekran + 4 eleman şeklinde ram üzerinde yer tutar. Bu sayede hem fazla ram kullanımını önlemiş olursunuz. Hem de farklı uygulamarın kekoca planlanmadan yazılması sonucu, ram yönetimi olmayan uygulamaların bedelini sizin uygulamanız ödememiş olur.

Proje kaynak kodlarına buradan ulaşabilir olumlu olumsuz mesajlarınızı mail olarak gönderebilirisiniz. Bir sonraki makale de görüşmek dileğiyle . . .

--

--