Herkese Merhaba. Bu yazıda bir android projesi içerisinde RecyclerView ve CardView toollarının kullanımını anlatmaya çalışacağım.

CardView dediğimiz tool, aslında günlük hayatta kullandığımız neredeyse tüm uygulamaların içerisinde bulunan bir view. CardView aracılığıyla uygulama içerisinde kart şeklinde dizaynlar oluşturup bunları listeleyebiliriz.

RecyclerView toolu ise oluşturduğumuz CardView’i elimizdeki veri dizaynına ve sayısına göre alt alta, yan yana ya da daha farklı şekillerde dizmemizi sağlar. Bu araçları kullanmaya başladığım ilk zamanlarda o kadar beğenmiştim ki, resmen “vovovovovovovov” demiştim diyebilirim. Ve bu nedenle de bu yazıyı yazma ihtiyacı hissettim. Hazırsak başlayalım…

Her şeyden önce projemizin app düzeyindeki gradle dosyasına aşağıdaki iki satırı eklemeliyiz. Çünkü bahsi geçen toolları kullanmamız için gereken kütüphaneleri projemize import etmemiz gerekiyor.

implementation 'com.android.support:recyclerview-v7:28.0.0'
implementation 'com.android.support:cardview-v7:28.0.0'

Daha sonra, RecyclerView’i kullanacağımız activitynin layout dosyası içerisine RecyclerView viewini ekliyoruz.

Sonrasında ise CardView dizaynını oluşturuyoruz. Bu dizayn için layout klasörü içerisinde bir layout dosyası oluşturabilirsiniz. Bu layout, RecyclerView toolu içerisinde görünecek bir satırın dizaynı olduğu için isim verirken ona göre bir isim verirseniz (list_item, row vb.) işiniz kolaylaşacaktır. Aşağıda örnek dizaynı görebilirsiniz.

Dizaynları bitirdiğimize göre artık kodlara geçebiliriz.

Öncelikle bir model classı oluşturalım ve içerisine değişken olarak bir string ve bir date ekleyelim. Bu değişkenler üzerinde tutacağımız örnek verileri CardView’ler içerisinde göstereceğimiz için bu kısım önemli. Ancak elbette gerçek bir projede bu tür veriler veritabanı ya da herhangi bir API tarafından sağlanacaktır.

Aşağıda oluşturduğum örnek model classını görebilirsiniz.

Şimdi ise tüm bu işlemlerin gerçekleşeceği asıl classa geldik. Bu class RecyclerView adaptöründen extend edilmiş bir class ve haliyle override edilecek birtakım metodları var.

Yukarıdaki classa baktığımızda, öncelikle model classımızın arrayini tutması için bir array list, yapının doğru çalışması için bir gereksinim olan LayoutInflater objesi ve ihtiyaç halinde kullanmak üzere (Toast mesajları göstermek vb.) bir context objesi oluşturuyoruz. Constructor bölümünde ise bu objeleri gelen parametrelerin pointerlarına eşitliyoruz.

onCreateViewHolder bölümünde ise RecyclerView içerisinde gösterilecek CardView dizaynını gösteriyoruz ve holderimizi return ediyoruz.

onBindViewHolder bölümünde her bir satır için yapılması gereken işlemleri gerçekleştiriyoruz. Bu işlemler için ise classın aşağısında yazdığımız MyViewHolder isimli subclassı kullanıyoruz.

getItemCount metodu ise yukarıda bahsettiğim bind metodunun kaç kez çalışması gerektiğini değer olarak döndürüyor. Elbette biz de oluşturduğumuz ArrayList’in uzunluğunu döndürüyoruz.

Subclass içerisine geldiğimizde ise görüldüğü gibi her şeyden önce CardView içerisinde oluşturduğumuz viewleri tanımlıyoruz ve daha sonra layout içerisindeki viewlerle match ediyoruz.

Son olarak setData metodunda ise CardView içerisinde yapmamız gereken işlemleri gerçekleştiriyoruz, ben bu örnekte oluşturduğum model classının içerisinde tutulan verileri viewlerin içerisine doldurdum.

Her şey hazır olduğuna göre artık MainActivity içerisine geçip tüm yazdıklarımızı birleştirebiliriz. Ancak ondan önce stackoverflow üzerinden bulduğum ve işime oldukça çok yarayan bir classı daha projemize eklemeliyiz. Bu class aracılığıyla herhangi bir CardView’e tıklandığında bu click triggerini yakalayabiliyoruz ve ona göre istediğimiz işlemleri gerçekleştirebiliyoruz. (Aşağıdaki classı projenize direkt olarak import edebilirsiniz.)

Sona yaklaştık, artık MainActivity içerisine bakalım isterseniz;

Activity içerisinde öncelikle bir RecyclerView objesi, bir RecyclerViewAdapter objesi (yukarıda yazdığımız class) ve dataları tutacağımız, aynı zamanda adapter içerisine pointerini göndereceğimiz ArrayList objesi oluşturuyoruz.

Daha sonra RecyclerView objesini ve ArrayList’i initialize ediyoruz.

addExampleDatas metodunda oluşturduğumuz örnek verileri ArrayList içerisine ekliyoruz. (Bu metod konuyla ilgili olmadığı için ayrıntılı olarak anlatmayacağım, zaten hazır olarak internet üzerinden bulup kendime göre düzenledim diyebilirim. Ancak kodlara bakarak yapılan işlemi kolayca anlayabilirsiniz. Ayrıca bu metod, içerisinde üç farklı metod daha kullanmakta ancak dediğim gibi bakarak anlayabileceğiniz basit yapılar olduğu için üzerinde durmuyorum.)

RecyclerView adapterimizi initialize ediyoruz ve parametre olarak bulunduğumuz contexti ve oluşturduğumuz ArrayList’i gönderiyoruz. Sonrasında ise RecyclerViewin adapterini oluşturduğumuz adapter olarak set ediyoruz. Bu satırlar birlikte viewi ve adapteri birbirine bağlamış olduk.

Sonrasında gelen 3 satırlık kod bloğu aracılığı ile de viewin layout yapısını set ediyoruz.

Ve son olarak da RecyclerView için click listenerlerimizi oluşturuyoruz. Bu listenerlardan birisi normal click, diğeri ise long click durumunda tetikleniyor. Ben ise normal click bölümünde tıkladığım CardView’in içerisinde bulunan nameSurname değişkenini toast mesajı olarak ekrana yazdırdım.

Bu noktaya kadar her şeyi eksiksiz bir şekilde yaptıysanız projenize RecyclerView yapısını import ettiniz demektir. Uygulama ise şu şekilde görünecektir. Ancak eğer sorunlarla karşılaştıysanız, hemen aşağıdan proje dosyalarını indirip inceleyebilirsiniz.

Anlatacaklarım bu kadar, umarım yeterli düzeyde anlatabilmişimdir ve işinize yarayacaktır.

Bir sonraki içerikte görüşmek üzere…

CEVAP VER

Please enter your comment!
Please enter your name here