Android: ViewBinding vs DataBinding

Aybüke Fırat
3 min readJul 2, 2022

--

Herkese Merhaba!

Bugün sizlere ViewBinding-DataBinding ve bunlar arasındaki farklardan bahsedeceğim.

Android geliştirmeye henüz yeni başladıysanız, ViewBinding veya DataBinding kullanmaya başlamadan önce eminim ki findViewById’yi sıklıkla kullanmışsınızdır.

Yinede ilk kez bu yazıyla birlikte Android ile tanışacaklar için findViewById’nin ne olduğuna da değinelim.

Kullanıcı arayüzünde bulunan her bir bileşenin ilişkilendirildiği Id’ler vardır ve bu Id’ler bileşenlerin eylemlerinin backend tarafında kontrol edilebilmesinde büyük rol oynar.

findViewById, belirlenen bu Id’ler vasıtasıyla, UI bileşenleri olan Button’lar, TextView’ler ya da ImageView’ları backend kodumuza bağlar.

Ancak diğer bind işlemlerine göre oldukça maliyetli olması sebebiyle Google tarafından ViewBinding ve DataBinding ortaya çıkarılmıştır.

Maliyetli olmasının sebebi ise UI’da bulunan her bir UI bileşeni kontrol edilerek eşleştirilmek zorundadır ve bazı zamanlar kod ile bu bileşenleri bağladığımızı sansak dahi geri dönüş değeri olarak null döndürebilmektedir.

Android Jetpack ile DataBinding; Android Studio 3.6 ile ViewBinding kullanıcıya sunulmuştur.

Hoşçakal findViewById :).

findViewById ile vedalaştıysak ViewBinding ve DataBinding karşılaştırması yapalım mı?

1.İmplementasyon

DataBinding ve ViewBinding’i kullanabilmek için app seviyesindeki build.gradle dosyamız içerisinde aktif hale getiririz.

DataBinding

ViewBinding

DataBinding kullanırken xml dosyamız içerisinde de ufak bazı değişiklikler yapmamız gerekmektedir.

xml dosyamıza <layout> tagini ekleyerek namespaceleri bu tagin içerisine yerleştiriyoruz.

ViewBinding bu tagin eklenmesine ihtiyaç duymaz.

Eğer ViewBinding kullanıyorsak, .gradle dosyamızda aktif hale getirdikten sonra yolumuza doğrudan devam edebiliriz :).

2. Hız

ViewBinding’in temel avantajlarından birisi build time da hızlı olmasıdır. DataBinding’i build time da etkileyen annotation processors nedeniyle DataBinding ile ilişkili performans sorunlarını önlediği için daha kısa bir derleme süresine sahiptir.

3. Type ve Null Safety

View Binding’in type ve null safety özelliği sebebiyle, UI bileşenlerine herhangi bir null ve type kontrolü yapmamız gerekmez. XML’de bulunan TextView’in Id’sini atama ya da oluşturduğumuz herhangi bir View’in tipini bilme zorunluluğumuz yoktur.

DataBinding’in yapamayıp ViewBinding’in yapabildiği herhangi bir şey yoktur ve bu sebeple ikisine birden ihtiyaç duymayız. Projenizin karmaşıklığına göre hangisini kullanacağınızı tercih etmelisiniz.

Kısa bir kod örneği ile uygulama içerisinde nasıl kullanacağımıza göz atalım.

A. DataBinding

Birer adet EditText, TextView ve Button’ı layout içerisine ekliyor ve id tanımlamalarını yapıyorum. Kullanıcının EditText’e girdiği veriyi Button’a tıklanınca TextView’e yazdırmasını sağlıyoruz.

Aynı uygulamayı ViewBinding ile nasıl yapabileceğimize bakalım.

B.ViewBinding

Gayet kolay ve keyifli değil mi? :)

Umarım faydalı bir yazı olmuştur, aklınıza takılanları sormaktan çekinmeyin. Daha farklı içeriklerde görüşmek üzere!

--

--