Android’te View Binding Kullanımı ve Avantajları

Meriç Güller
3 min readJul 30, 2020

--

Merhabalar bugünkü merak edip hakkında yazı yazmaya çalıştığım konu view binding.

İlk olarak View Binding, Google I/O 19’da What’s New in Android sunumunda tanıtıldı. Sunum videosu:

Bu API, Data Binding ile benzer özelliklere sahiptir, ancak onu farklı kılan birçok özelliği bulunmaktadır. Şimdi view binding ile konumuza başlayalım.

View Binding Nedir?

Data Binding, UI bileşenlerini barındıran layout dosyası ile kodumuzu birbirlerine bağlamayı hızlı ve kolay bir şekilde yapmamızı sağlayan Google’ın çıkarttığı bir kütüphanedir. Daha fazla bilgiye buradan ulaşabilirsiniz.

View Binding’ te aynı Data Binding gibi bu işlemi gerçekleştirmek amacıyla çıkartılmıştır. Peki neden findViewById, Data Binding veya Kotlin syntetic varken View Binding kullanalım?

1- findViewById, diğer bind işlemlerine göre oldukça maliyetli bir işlemdir ve güvenli değildir. Maliyetli olmasının sebebi, UI’da bulunan her bir View kontrol edilerek eşleştirilmek zorundadır ve bazı zamanlar kod ile view bileşenlerini bağladığımızı sansak bile geri dönüş değeri olarak null döndürebilmektedir.

2- Kotlin synthetics ile kolaylıkla bind işlemini sağlasakta bazı zamanlar bağlama işlemi geri dönüş değeri olarak null değeri döndürmektedir.

3- Data Binding, build time üzerinde oldukça olumsuz etkisi vardır. Android takımı, bunun farkında olması sebebiyle View Binding çıkardı.

View Binding ile Data Binding Karşılaştırması

1.Kullanılabilirlik

Her iki kütüphane de gradle üzerinden etkinleştirilmesi gereklidir. Ancak Data Binding sınıfı generate etmek istiyorsak xml dosyamız içerisindeki UI bileşenlerini <layout> taglari arasına almamız gereklidir. View Binding’te böyle bir gereklilik yoktur. Gradle üzerinden aktif ettikten sonra gerekli classlar otomatik olarak generate edilmektedir.

2.Hız

View Binding, daha hızlı olmasının başlıca sebebi gereksiz annotion kullanmamasıdır. Bunun sebebiyle uygulamanın build zamanı daha kısa sürerek performanslı çalışır.

3. Type ve Null Safety Özelliği

View Binding, type ve null safety özelliği olması sebebiyle, viewlara herhangi bir null kontrolü yapmamıza gerek yoktur. Bu özellik Data Binding’te de bulunmaktadır.

Kod Üzerinden Uygulama

Adım adım view binding kütüphanesini nasıl ekleyeceğimizi inceleyelim.

Öncelikle Android Studio 3.6 ve üzeri bir sürüme sahip olmalısınız.

Build.gradle(Module:app) üzerinden viewBinding aktifleştirilmesi gereklidir. Bunun için aşağıdaki kodu ekliyoruz.

Ekleyip senkronize etme işlemini gerçekleştirdikten sonra gerekli olan kütüphaneler generate edilmiş olacaktır. Şimdi UI bileşenlerinin olacağı xml yazalım.

Görüldüğü gibi UI bileşenleri Data Binding’ te olduğu gibi herhangi bir tag arasına alınmamaktadır ve normal bir şekilde tanımlanmaktadır.

Activity kısmını inceleyecek olursak, main_activity.xml layout dosyamıza karşılık gelen view binding generate sınıfımızı kullanarak bağlama işlemini sağlayabiliriz. View Binding tarafından layout isminde bulunan alt çizgiler ve büyük küçük harfler otomatik olarak programcılık kurallarına bağlı kalınarak üretilmektedir. Örneğimizde:

activity_main.xml — — — — — > ActivityMainBinding şeklinde generate edilmiştir.

Inflate işlemini gerçekleştirebilmesi için layoutInflater parametre olarak verilmektedir. UI üzerindeki nesneleri binding değişkeni üzerinden erişerek üzerilerinde gerekli işlemleri gerçekleştirebiliriz.

Eğer UI üzerindeki componentin view binding ile bağlanmasını istemiyorsak bunu basitçe layout üzerinden viewBindingIgnore ile devre dışı bırakabiliriz.

Aşağıdaki bağlantı ile daha fazla açıklamaya ulaşabilirsiniz. Buraya kadar okuduğunuz için teşekkürler. Herkese mutlu günler.

Kaynaklar :

https://proandroiddev.com/new-in-android-viewbindings-the-difference-from-databinding-library-bef5945baf5e

https://developer.android.com/topic/libraries/view-binding

https://medium.com/software-development-turkey/android-view-binding-f06b5ba0213a

https://medium.com/@hardianbobby/databinding-vs-viewbinding-simple-comparison-792fa8d72e8

https://medium.com/google-developer-experts/exploring-view-binding-on-android-44e57ba11635

--

--