Android Data Binding
Herkese merhaba arkadaşlar, bu yazımda Android’de Data Binding kullanımını detaylı bir şekilde ele alıyor olacağız.
Android Data Binding Nedir ?
Android Jetpack kütüphanesinden biri olan Data binding’in Türkçe karşılığına baktığımızda kısaca veri bağlama olarak karşımıza çıkmaktadır. Veri bağlamadan kastettiğimiz aslında kısaca kullanıcı arayüzlerine (UI) daha düzenli kod yazmamızı sağlayan, kod karmaşasını ortadan kaldırmak için UI bileşenleri ile veri kaynaklarımızı bağlamamızı sağlayan bir yardımcı kütüphanedir.
Data Binding Avantajları nelerdir ?
- Kullanımı kolaydır.
- Klasik yöntemle kullanılan findViewById kullanımını ortadan kaldırır.
- Kullanıcı arayüzü (UI) ile kaynak kodlarımızı ayırır.
- MVVM design Pattern’i ile kullanım kolaylığı sağlar.
Data Binding Nasıl Kullanılır?
Data Binding veya herhangi bir kütüphane kullanmadan önce klasik yöntem ile nasıl yapıyorduk buna bakalım.
Yukarıda basit bir xml dosyası oluşturduk ve içerisine LinearLayout yerleştirdik daha sonra onunda içerisine iki tane TextView oluşturduk.
Yukarıda içerisinde Araba bilgilerinin bulunduğu Car isimli data classımız tanımladık. İçerisinde carName ve carColor değerlerimiz vardır. Bu data class aracılığı ile nesne üretiriz ve bu nesne aracılığıyla ekranımızdaki View’a değer atama işlemini yapabiliriz.
MainActivity.kt dosyamızda ise xml içerisindeki elemanımızın hepsini tanımladık. Daha sonra ise Car data classımızdan nesne ürettik ve xml içerisindeki elemanımıza bu değerlerimizi setledik. Klasik yöntem ile aslında kısaca bu şekilde yapıyoruz basit bir özet anlatımla, bu örneğimizde xml dosyamız içerisinde çok fazla elemanımız olmadığı için daha az bir yük gibi görünüyor olabilir fakat daha büyük projelerimizde içerisinde çok fazla item ögelerimizin olduğu View larımız olabilir. Hepsini tek tek findViewById ile tanımlamaya çalıştığımızda çok zahmetli bir işe girmiş oluruz ve işlerimizi daha zor hale getiren bir durumdur.
Peki nasıl daha az kod yazarak data class, View ve Activity, Fragmentımızı bağlayabiliriz. Data Binding ile daha az kod yazarak bağlayabiliriz, şimdi nasıl Data Binding’i kullanırız ona bakalım.
Kurulum
Yapmamız gereken ilk olarak build.gradle(app) dosyamız içerisine Android attribute altına data binding kütüphanesini eklememiz gerekiyor.
Data binding kütüphanesini eklediğimize göre şimdi kullanımına geçelim. XML dosyamızı data binding formatına dönüştürüyoruz. Bu dönüştürme işlemin <layout> tag’ları arasına alarak yapıyoruz ve namespace’leri de <layout> tag’ları arasına taşıyoruz. Bu işlemin kısa yolu ise daha önce kullanılan layout üstüne gelerek Alt+Enter kısayolu ile yapıyoruz.
XML’imizi içerisine baktığımız, <data> taglari bağlıyacağımız veriyi göstermektedir. Data tagı arasında <variable> tanımlıyoruz bu variable tagı hangi data class’ını bağlanacağımızı gösteriyor. Data classımızın içerisindeki fieldlara ulaşmamızı sağlıyor. Sonrasında ise textview.text yapmak yerine android:text="@{car.carName}"
şeklinde yaparak TextView’in Car modelindeki carName’i kullanacağını belirtiyoruz.
Car data classımızı aynı şekilde kullanabiliriz.
Data classımızı oluşturduk ve bu XML dosyamıza ile bağlantı kuracağını belirttik sırada veriyi MainActivity.kt sınıfımız içerisinde bağlayacağız.
Burada ActivityMainBinding’i tanımladık ve activity_main.xml ile verileri bağlayacağımız için burada ActivityMainBinding tipinde oluşturduk. Klasik yöntemde setContentView ile bağlıyorduk fakat Data Binding ile birlikte DataBindingUtil class’ından setContentView fonksiyonunu activity_main ile bağlıyoruz. Daha sonra Car classından nesne üretiyoruz ve binding işlemini yapacak nesne ile XML dosyasına neyin bağlanılacağımızı bildirdik.
Kısaca Data binding bu şekilde biraz daha detaylı özelliklerine bakalım..
BindingAdapter
BindingAdapter’ları aslında kısaca xml üstünde kendi yazdığımız methodları tanımlamamız gibi düşünebiliriz. Örnek olarak Glide ile uygulamamızda ImagzViewlerde görselleri göstermek istediğimiz zaman BindingAdapterlara ihtiyacımız doğar.
Kullandığımız BindingAdapter class’ının içerisinde @BindingAdapter() tanımlıyoruz ve içerisine istediğimiz isimle tanımlıya yapabiliyoruz daha sonra bu isim ile xml içerisinde kullanımda bulunuyoruz. Fonksiyon tanımı olarak ise normal tanımlamada bulunuyoruz. Daha sonra Glide kütüphanesi sayesinde ImageView’da url den aldığı image görüntülüyor.
Data Binding ve Visibility
Data binding ile aslında işimizi kolaylaştıran bir diğer nokta ise view ögelerimizin visibility (görünürlük) durumu. Data binding sayesinde bu durumu rahatlıkla çözebiliyoruz.
Data Binding ve onClick
Data binding ile onClick işlemide aslında listener yöntemi ile event tetiklendiğinde sağlanmaktadır. Aşağıda xml de kullanacağımız fonksiyonumuzu oluşturduk ve tıklama olduğu zaman background değiştirdik.
Daha sonra xml içerisinde kullandık.
Bugün Android de Data Binding konusunu anlatmaya çalıştım.Umarım faydalı olmuştur. Bir sonraki yazıda görüşmek dileğiyle. 😊
Kaynaklar: