Nedir Bu DataBinding ve ViewBinding? Farkları ve Detaylı Anlatım

Sezer Özaltun
Huawei Developers - Türkiye
5 min readNov 3, 2022
ViewBinding vs DataBinding

Giriş

Herkese merhabalar,

Yeni bir medium yazısı ile birlikteyiz. Bu makalede, Android projelerimizde oldukça çok kullandığımız View Binding ve Data Binding nedir? , neden bunları kullanırız? ve ne zaman kullanmalıyız? gibi konulara değineceğiz.

Sizlerde farketmişsinizdir, bazı projelerde View Binding kullanılıyorken diğerlerinde ise Data Binding kullanılıyor. Peki neden bunları kullanmayı tercih ediyoruz? Neden biri View Binding kullanırken diğeri Data Binding kullanıyor? Bunun gibi sorulara cevap arıyorsanız doğru yerdesiniz :)

View Binding Nedir?

View Binding, kodunuzu ilgili layout xml dosyasına daha kolay ve daha hızlı olarak bağlamanızı sağlar. Bunu yapmak için önceden findViewById kullanırdık ve layout xml dosyamızda kaç tane nesne varsa o kadar tanımlama yapmamız gerekiyordu. ViewBinding sayesinde bunu sadece 1 kez tanımlamamız yeterli oluyor. View Binding ile 1 kez bağladıktan sonra bir değişken oluşturup ardından bu oluştuduğumuz değişken ile layout xml içerisindeki tüm nesnelere erişebiliriz.

View Binding ve findViewById Farkları

İki tane temel farklı vardır.

  • Daha Hızlı Derleme: View Binding annotation(açıklama) gerektirmez, bu nedenle derleme süresi daha hızlıdır.
  • Kullanım Kolaylığı: View Binding ile özel olarak etiketlenmiş layout xml dosyaları tanımlamamızı gerektirmez.Her widget için ayrı ayrı tanımlama yapmamıza gerek yoktur. Sadece 1 kez tanımlarız ve otomatik olarak oluşturulur. Bu nedenle kullanımı daha hızlıdır.

Nasıl Kullanılır (Activity) ?

1- Öncelikle View Binding kütüphanesini build gradle(app) içine eklemeliyiz.

build.gradle(app)

2- Ekledikten sonra Activity içerisine aşağıdaki kodları yazalım.

MainActivity

3- Bu kadar. Bundan sonra istediğiniz widget’a binding değişkeni ile erişebilirsiniz.

MainActivity

Nasıl Kullanılır (Fragment) ?

1- Activity kullanımında yaptığımız gibi build gradle(app) içine kütüphaneyi ekleyelim.

2- Fragment içine aşağıdaki kodları yazdıktan sonra binding nesnesi ile layout xml içerisindeki tüm nesnelere erişebilirsiniz.

Fragment

Data Binding Nedir ?

Data Binding, verileri bir layout xml dosyasına bağlama işlemidir. Bu, verilerinizi tumanıza ve senkronize halde görüntülemenize olanak tanır.Data Binding, iki yönlü veya tek yönlü olabilir.

  • İki Yönlü: Verilerdeki değişiklikler görünüme yansıtılır
  • Tek Yönlü: Verilerdeki değişiklikler görünüme yansıtılmaz.

Data Binding ile tasarım ve kod sayfamız tamamen birbirinden ayrılır. Hatta tasarım sayfamızda(layout xml) bazı fonksiyonlar yazarak Activity’den daha da bağımsız olabiliriz. Binding Adapter sayesinde özel fonksiyonlar oluşturabiliriz.

Nasıl Kullanılır (Activity) ?

1- Öncelikle build.gradle(app) içine kütüphanemizi ekleyelim.

build.gradle(app)

2- Layout xml dosyamızı aşağıdaki gibi düzenleyelim. Sadece <layout> tagi eklemeliyiz. <data> bölümünü birazdan anlatacağım.

layout xml

3- Activity içerisine aşağıdaki kodları yazdıktan sonra binding değişkeni ile layout xml içerisindeki tüm nesnelere erişebiliriz.

MainActivity

Nasıl Kullanılır (Fragment) ?

1- Activity kullanımında yaptığımız gibi build gradle(app) içine kütüphaneyi ekleyelim

2- Layout xml dosyamızı aşağıdaki gibi düzenleyelim.Bu sefer <data> bölümünü de dolduruyoruz. Aynı işlemi Activity için de yapabilirsiniz. Ben Fragment ile yapmayı tercih ettim.

layout xml

Burada <data> içinde yer alan model sayesinde tasarım nesnelerine veri gönderebiliyorum. Binding Adapter sayesinde ImageView’de kolay bir şekilde resim gösterebiliyorum.

3- Model Sınıfını oluşturalım. Verileri bu sınıftan çekeceğiz ve layout üzerinde verileri Data Binding kullanarak göstereceğiz.

Model Sınıfı

4- ImageView’de resim göstermek için Binding Adapter oluşturalım.

Binding Adapter

5- HomeAdapter sınıfı ile row_item.xml dosyamızı Data Binding ile bağlıyoruz ve burada binding.model = item kodu ile verilerimizi layout xml dosyamıza gönderiyoruz.

Home Adapter

6- Son adım olarak Fragment içindeki gerekli Data Binding kodlarını yazalım. Verileri ekranda görebilmek için HomeAdapter ile Fragment’ı bağlamamız gerekiyor. Konumuz Data Binding olduğu için o kodları eklemedim.

Home Fragment
Data Binding vs View Binding

View Binding ve Data Binding Farkı Nedir ?

  • View Binding, kodunuzu belirli layout xml dosyalarına bağlamanın bir yoludur. Bu, görünüm özelliklerine doğrudan kodunuzdan erişmenizi ve bunları değiştirmenizi sağlar.
  • Data Binding, verileri layout xml dosyalarına bağlamanın bir yoludur. Bu, fazladan kod yazmadan verileri doğrudan görünümlerinize bağlamanıza olanak tanır.
  • Aşağıdaki görselde de gördüğünüz gibi Data Binding, View Binding’in yaptığı her şeyi kapsamaktadır. Bağlama düzenleri olarak ikisi de aynıdır. Data Binding, ek olarak XML dosyasındaki değişkenleri de kullanmamıza imkan tanır. Peki hangisini kullanmalıyız ?
View Binding ve Data Binding

Hangisini Kullanmalıyım ?

  • Bu sizin ihtiyaçlarınıza göre değişir.
  • View Binding, yalnızca layout dosyanızdaki nesnelere erişmeniz için iyi bir tercihtir.
  • Layout içindeki nesnelerinize veri göndermek gerekiyorsa Data Binding daha iyi bir seçim olacaktır.
  • Projenizde MVVM kullanıyorsanız , Data Binding kullanmanız daha iyi olacaktır.
  • Data Binding ile görünüme verileri de aktarabildiğimiz için MVVM ve temiz kod yapısına daha uyumlu olacaktır.

Projemizde Data Binding ve View Binding birlikte kullanılabilir. Verileri aktardığımız görünümlerde Data Binding , aktarmadığımız görünümlerde ise View Binding kullanabiliriz.

Ne Zaman View Binding , Ne Zaman Data Binding Kullanmalıyım ?

Android projenizde bir kullanıcı arayüzü geliştiriyorsanız, layout içindeki nesnelere erişmek için iki seçeneğiniz vardır. Bunlar View Binding ve Data Binding. Her ikisinin de artıları ve eksileri vardır, bu nedenle her birinin ne zaman kullanılacağını bilmek önemlidir.

  • View Binding, birkaç görünüme sahip basit UI’lar için uygundur. Kurulumu hızlı ve kolaydır. Ancak, derleme zamanına hataları kontrol edemediğinden Data Bindin’den daha az güvenli olabilir.
  • Data Binding, View Binding’e göre daha güçlüdür ve daha karmaşık düzenler için kullanılabilir. Ayrıca derleme zamanında hataları kontrol ettiğinden daha güvenilirdir.

Sonuç

Hem View Binding hem de Data Binding’in kendi avantajları ve dezavantajları vardır, bu nedenle hangisini seçmeniz gerektiği ihtiyaçlarınıza bağlıdır. Eğer daha düzenli bir koda sahip olmak istiyorsanız ve verileri aktarmak istediğiniz bir projeniz var ise Data Binding kullanabilirsiniz. Layout dosyalarına daha hızlı ve kolay erişmek istiyorsanız ama veri aktarmak istemiyorsanız View Binding kullanabilirsiniz.

Bir makalenin daha sonuna geldik. Umarım sizler için faydalı bir makale olmuştur. Bir sonraki makalede görüşmek üzere. Kendinize iyi bakın.

Referanslar

--

--