Büyük projelerde onlarca itemi findViewById() ile teker teker tanımlamak çok uzun ve gereksiz bir işlem. Data Binding ile daha az kod yazarak aynı işi yapabiliyoruz.
Bu yazıda findViewById() kullanmadan Data Binding ile nesnelere ulaşmayı anlatacağım.
Projede Aktif Etme
build.gradle -> android içerisine aşağıdaki kodu ekleyerek aktif ediyoruz.
1 2 3 4 5 6 |
android { ... dataBinding { enabled = true } } |
Data Binding Kullanımı
XML
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
<?xml version="1.0" encoding="utf-8"?> <layout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools"> <LinearLayout android:id="@+id/example_layout" android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center" android:orientation="vertical" tools:context=".MainActivity"> <TextView android:id="@+id/hello_world_text" android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center" android:text="Hello World" /> </LinearLayout> </layout> |
Data Binding kullanabilmek için xml dosyasına <layout> tagı ile başlanması gerek. Yukarıdaki gibi LinearLayout veya RelativeLayout ile değil <layout> tagı ile başlıyoruz. Tabi namespaceleri de bu taga taşıyoruz.
JAVA
Java kısmında setContentView(R.layout.activity_main); kodu yerine aşağıdaki kodu kullanıyoruz.
1 |
ActivityMainBinding binding = DataBindingUtil.setContentView(this, R.layout.activity_main); |
Not: Her activity için farklı bir class otomatik olarak oluşturulur. MainActivity için ActivityMainBinding adında bir class oluşturmuş. Örneğin HomeActivity için ActivityHomeBinding adında bir class oluşturacaktır.
Artık binding nesnesiyle xml dosyasındaki elemanlara kolay bir şekilde erişebileceğiz.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
package com.hknsoft.databinding; import androidx.appcompat.app.AppCompatActivity; import androidx.databinding.DataBindingUtil; import android.os.Bundle; import android.view.View; import com.hknsoft.databinding.databinding.ActivityMainBinding; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); ActivityMainBinding binding = DataBindingUtil.setContentView(this, R.layout.activity_main); binding.helloWorldText.setText("Deneme123"); binding.exampleLayout.setVisibility(View.VISIBLE); } } |
İşte bu kadar kolay. Data Binding ile onlarca koddan kurtulmuş olduk.
Android Studio ile ilgili yazılar için tıklayabilirsiniz.