Android-RecyclerView
Verileri listeli ve düzenli olarak görüntülemek için RecyclerView kullanılır. RecyclerView ile verilerimizi yatay(horizontal), dikey(vertical), zik-zak(staggered), ızgara(grid) görünümleri şeklinde listeleyebiliriz.
RecyclerView, ListView’in daha gelişmiş ve esnek bir versiyonudur. RecyclerView da verilerin tümü listelenmez. Kullanıcı ekranda verileri görüntüledikçe veriler çizdirilir. ListView da ise tüm veriler çizdirilir. Ayrıca ListView ile ,verileri çeşitli şekillerde listele yemezken, RecyclerView ile yukarıda bahsettiğim gibi farklı görünümler ile listeleyebiliriz.
Hadi gelin birlikte örnek bir uygulama ile konuyu daha iyi öğrenelim.
RecyclerView’ı 4 madde de toparlayacağız.
- Listelenecek verilerin görünümü oluşturulacak.
- Model oluşturulacak.
- RecyclerViewAdapter yazılacak
- UI da liste ile adapter bağlanacak.
Build.gradle(app) içerisine RecyclerView implementantion’u ekleyelim.
dependencies {
implementation 'com.android.support:recyclerview-v7:28.0.0'
}
activity_main.xml
içerisinde tek bir companent tutacağımız için FrameLayout kullandık. RecyclerView companentini xml ‘e ekliyoruz.
RecyclerView Item Tasarımı
RecyclerView içerisinde verilerin hangi görünümde olmasını istiyorsak oluşturacağımız layout içerisinde dilediğimiz tasarımı oluşturuyoruz.
Listeleyeceğimiz Name, Job, Salary
değerleri için aşağıdaki tasarımı oluşturacağız.
Model
Yaptığımız uygulama için ihtiyacımız olacak değişkenleri data class oluşturarak tanımlıyoruz. Böylelikle listeleme de tanımladığımız modeli kullanacağız.
Android’de sayfalar arası veri alışverişi yaparken Intent/Bundle yapısını çoğunlukla kullanırız. Bu yöntem daha çok string, integer, double, boolean vs. verileri diğer sayfalara göndermek için kullanılır. Bunun dışında herhangi bir object göndermek istersek
Parcelable
kullanabiliriz.
RecyclerViewAdapter
Listemizin görünümü ve verilerin bağlantı işlemini bu sınıf içerisinde tanımlayacağız.
Yapıyı kurabilmemiz için birde ViewHolder classımıza ihtiyacımız var. Dilerseniz bu classı adapter içerisinde tanımlayabilir veya farklı bir class açarak buradan ilgili tanımlamaları yapabilirsiniz. Biz 2 tane class oluşturacağız.
ViewHolder
ViewHolder class içerisinde, hangi layout u kullanacağımızı belirtiyoruz. Bind metodu ile listedeki veriler ile layout daki companentleri bağlıyoruz. HigherOrder function tanımlaması ile kullanıcının detay sayfası yönlendirilmesi için ilgili parametreler gönderiliyor.
Adapter
onCreateViewHolder() : Bu method adaptör oluşturulduğunda oluşturduğumuz ViewHolder’ın başlatılması için tanımladığımız ViewHolder’ı çağırıyor.
onBindViewHolder() : onCreateViewHolder’dan dönen verileri bağlama işlemini gerçekleştirdiğimiz metottur. ViewHolder da tanımladığımız bind
metodu çağırılıyor.
getItemCount() : Listemizin eleman sayısını döndüren metottur.
UI da Adapter Tanımlama
MainActivity onCreate içerisinde recyclerview a ilgili adapter tanımlamasını yapıyoruz. Normalde verilerimizi uzak sunucudan veya local veritabanından alırız. Biz mock adında obje türünde veri tanımlaması yaptık. Listelenecek verilerimizi bu metod ile oluşturuyoruz.
Itemlara tıklandığında Detay sayfasına yönlendirme işlemi HigherOrder Fonksiyon ile yapılıyor.
Mock
RecyclerView da listelenecek veriler için veri tanımlamasını mock objesi içerisinde getList fonksiyonu ile yapıyoruz.
DetailActivity
Intent ile Parcelable olarak gönderdiğimiz verileri activity_detail.xml
içerisindeki companentlere yazdırıyoruz.
activity_detail.xml
Android-RecyclerView ı konu edindiğim ve anlatmaya çalıştığım yazımın sonuna geldik. Sağlıklı Günler. Sağlıklı Kodlamalar :)