Kotlin’de Recyclerview Kullanımı

Ecem Aleyna Süren
İyi Programlama
Published in
4 min readMar 7, 2020

Merhaba,

Bu yazımda Kotlin’de Recyclerview yapısından bahsedeceğim. Bir uygulama yapmak istiyorsanız ve nereden başlayacağınızı bilmiyorsanız recyclerview öğrenerek başlayabilirsiniz. Çünkü yapmak istediğiniz her uygulamada muhtemelen recyclerview kullanacaksınız.

Önce nedir bu recyclerview, ne yapar ondan bahsedelim. Verileri listelemek için kullanılan bir yapıdır. Scroll (kaydırma) işleminin yapılmasını sağlar. Listview’in daha gelişmiş ve esnek bir sürümüdür.

Recyclerivew’ın Yararları

RecyclerView’in en büyük yararı, büyük listeler için çok verimli olmasıdır:

  • Default olarak, RecyclerView yalnızca ekranda görüntülenmekte olan item’leri işlemek veya çizmek için çalışır. Örneğin, listenizde bin item varsa ancak ekranda yalnızca 10 item görünürse, RecyclerView ekranda yalnızca 10 item çizecek kadar iş yapar. Kullanıcı kaydırdığında, RecyclerView ekranda yeni item’lerin ne olması gerektiğini bulur ve bu item’leri görüntülemek için işlem yapar.
  • Bir item ekrandan çıktığında, itemin görünümleri geri dönüştürülür. Bu, itemin ekrana kaydırılan yeni içerikle dolu olduğu anlamına gelir. Bu RecyclerView davranışı çok fazla işlem süresi kazandırır ve listelerin akıcı bir şekilde kaydırılmasına yardımcı olur.
  • Bir item değiştiğinde, listenin tamamını yeniden çizmek yerine RecyclerView bu itemi güncelleyebilir. Bu, karmaşık item listelerini görüntülerken büyük bir verimlilik kazandırır.

Aşağıdaki görüntüde bir view ABC dataları ile doldurulmuş. Scroll işlemi yapılıp bu view ekran dışına çıktığında, Recyclerview aynı view’ı yeni XYZ data’ları için yeniden kullanır.

Bir RecylerView oluşturmak için temelde 3 şeye ihtiyaç vardır.

  • Adapter
  • LayoutManager
  • ViewHolder

Şimdi bunları tek tek açıklayalım ve uygulamamıza başlayalım.

📍Adapter

Adapter verileri RecyclerView’e bağlar. Verileri bir ViewHolder içinde görüntülenebilecek şekilde uyarlar. RecyclerView, verilerin ekranda nasıl görüntüleneceğini anlamak için adapter kullanır.

📍Layout Manager

Bu nesne RecyclerView’in itemlerini konumlandırır ve ekran dışında geçiş yapan itemlerin ne zaman geri dönüştürüleceğini söyler.

Default olarak Layout Manager 3 seçenek sunar.

LinearlayoutManager : İtemleri standart ListView şeklinde görünmesini sağlar.

GridLayoutManager : İtemlerin satır ve sütun şeklinde görünmesini sağlar.

StaggeredGridLayoutManager : İtemlerin kademeli satır ve sütun şeklinde görünmesini sağlar.

📍ViewHolder

Her itemin içinde bulunan bileşenlerin tanımlama işleminin yapıldığı yerdir.

Şimdi ise projemize başlayalım.

Ben burada Cardview ile recyclerview kullandım. En üste bir textview verdim. Ayrıca her bir cardview’a click özelliğide ekledim.

  1. Adım : İlk önce recyclerview’ı projemize implement edelim. Bunu isterseniz manuel olarak app modülündeki build.gradle’ın dependencies kısmına implement edebilirsiniz. İsterseniz de aşağıdaki görüntüde olduğu gibi projenize direkt indirebilirsiniz. İndirdiğinizde app modülündeki build.gradle’ın dependencies kısmına eklemeyi otomatik olarak yapmış oluyor.

Manuel eklemek için buradan güncel versiyonu görebilirsiniz.

2. Adım : activitiy_main.xml dosyamızın içine recyclerview’ımızı ekleyelim. Ayrıca koymak istediğimiz componentleri’de koyalım. En üste bir textview, onun altına ise bir recyclerview koydum.

3. Adım : Recyclerview itemleri için bir item_image_with_text.xml dosyası oluşturuyoruz. Böylece recyclerview itemlerimizin nasıl görüneceği ile ilgili tasarımı yapmış oluyoruz. Ben burada Cardview kullandım. Cardview içine bir ImageView ve bunun üzerinede TextView koydum.

4. Adım : Model class’ımızı oluşturalım. Bu bir data class’ı olacak.

5. Adım: Şimdi ise adapter oluşturmaya başlayabiliriz. Adapter’ımız RecyclerView.Adapter’dan extend edecek ve arayüz olarakta oluşturacağımız ItemListViewHolder class’ını vereceğiz. Adapter’ımızın primary constructor’ına ise itemlerimiz için oluşturacağımız listeyi vereceğiz.

ItemListAdapter bizden 3 methodu override etmemizi isteyecek. Bunlar;

→ onCreateViewHolder( ): Adapter oluşturulduğunda ViewHolder’ı başlatıyor.

→ getItemCount( ): Listemizin eleman sayısını veriyor.

→ onBindViewHolder( ) : onCreateViewHolder’dan dönen verilerin bağlama işlemini gerçekleştiriyor.

6. Adım : Şimdi ise ViewHolder class’ını oluşturalım. RecyclerView.ViewHolder’dan extend edecek.Burada bir bindItems methodu içinde recyclerview itemlerimiz için oluşturulan layout’taki (item_image_with_text.xml) bileşenleri tanımlıyoruz.

7. Adım : Veriler içinde bir MockList object’i oluşturup oradan verileri alalım. Buradaki getMockedList methodu ItemModel class’ımız tipinde bir liste dönüyor (adapter’ın constructor’ında olduğu gibi) ve ItemModel içindeki değişkenlere burada atama yapıyoruz.

8. Adım : En son artık adapterımızı MainActivity’de listemize bağlıyoruz. Recyclerview tanımımızı yapıp LayoutManager’ını belirtiyoruz. Ben yan yana 2 tane item göstermesini istediğim için GridlayoutManager kullandım ve span’inine 2 verdim.

Projemizin son hali aşağıdaki gibi olacaktır.

Bir sonraki yazımda görüşmek üzere.

Kodların tamamına Github adresimden erişebilirsiniz.

Referans : Tık Tık

--

--