RecyclerView'da DiffUtil Kullanımı



Verilerin bir liste üzerinde gösterilmesini sağlayan RecyclerView'lar, Android uygulamalarında en çok kullanılan yapılardan biridir. Listelerin hızlı ve sorunsuz bir şekilde güncellenmesi oldukça önemlidir, bu noktada devreye DiffUtil girer.


Peki DiffUtil Nedir?

DiffUtil iki liste arasındaki farkı bulan ve güncellenmiş listeyi çıktı olarak sunan, RecyclerView'in performansını artıran yardımcı bir sınıftır. DiffUtil sınıfı notifyDataSetChanged() yöntemini çağırma ihtiyacını ortadan kaldırır.


Şimdi örnek bir proje ile RecyclerView'da DiffUtil sınıfını nasıl kullanacağımızı öğrenelim. Bu projede kelimeleri listeleyeceğiz ve listeye yeni kelimeler ekleyeceğiz.


Adım 1

Android Studio'da yeni bir proje oluşturuyoruz.


Adım 2

build.gradle(app) içerisinde viewBinding'i etkinleştiriyoruz.



Adım 3

Verileri tutmak için Word adında yeni bir data sınıfı oluşturuyoruz.


Adım 4

activity_main.xml dosyasını açıyoruz ve içerisine verileri göstermek için bir RecyclerView ve yeni kelimeler eklemek için kullanacağımız bir buton ekliyoruz.


Adım 5

RecyclerView'da bulunan her bir satırı temsil edecek olan row_item.xml adında yeni bir layout dosyası açıyoruz. Burada bir CardView ve kelimeleri tutmak için bir TextView tanımlıyoruz.



Adım 6

WordDiffUtil adında yeni bir DiffUtil sınıfı oluşturup, bu sınıfı DiffUtil.Callback()‘ten türetiyoruz. Constructor‘da eski liste ve yeni liste olmak üzere iki adet parametre alıyoruz.

Son olarak gerekli metotları implement ediyoruz.

  • getOldListSize metodu, eski listenin eleman sayısını döndürür.

  • getNewListSize metodu, yeni listenin eleman sayısını döndürür.

  • areItemsTheSame metodu, karşılaştırılan elemanların aynı olup olmadığını kontrol eder.

  • areContentsTheSame metodu, karşılaştırılan elemanların içeriğinin aynı olup olmadığını kontrol eder. Bu metot, yalnızca areItemsTheSame metodu true değerini döndürürse çağrılır.