Android DataBinding Kullanımı

Android DataBinding nedir ?

Bir çoğumuz Android uygulama geliştirmeye ilk başladığımız zamanlarda nesne tanımlamaları ve tanımlanmış nesnelerin değerlerini değiştirme gibi konularda oldukça çile çektik. Data Binding nesne tanımlaması ve nesne olayları işlerinizi neredeyse tek satıra indiriyor.

Projeye DataBinding dahil etmek;

Projenizin build.gradle (Module: App) içerisindeki android Scope'u içerisine aşağıdaki kodları ekleyin;

dataBinding {
enabled = true
}

Main Activity için üretilen activity_main.xml dosyasını, main_activity.xml şekline dönüştürün ve içerisine aşağıdaki kodları ekleyin.

<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">

<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent">

<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:textSize="20sp" />
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:layout_marginBottom="132dp"
android:text="Button" />

</RelativeLayout>
</layout>

MainActivity.java kodlarımız;

import android.databinding.DataBindingUtil;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;

import com.serifgungor.databinding.databinding.MainActivityBinding;

public class MainActivity extends AppCompatActivity {

private MainActivityBinding activityMainBinding;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main_activity);

activityMainBinding = DataBindingUtil
.setContentView(this, R.layout.main_activity);
activityMainBinding.textView.setText("MERHABA");
activityMainBinding.button.setText("BUTONA TIKLA");
activityMainBinding.button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {

}
});

}
}

DataBinding kullanmasaydık durum neydi ?

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {

Button btn;
TextView tv;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main_activity);

tv = findViewById(R.id.textView);
btn = findViewById(R.id.button);

tv.setText("DENEME");
btn.setText("BUTON");
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {

}
});
}
}

POJO(Model) üzerinden XML Layout içerisine değer göndermek istiyorsanız;

<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">

<data>
<variable name="user" type="com.serifgungor.databinding.User"/>
</data>

<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent">

<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:text="@={user.email}"
android:textSize="20sp" />



</RelativeLayout>
</layout>

User modelimiz;

package com.serifgungor.databinding;

public class User {
private String name;
private String email;

public User() {
}

public User(String name) {
this.name = name;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public String getEmail() {
return email;
}

public void setEmail(String email) {
this.email = email;
}
}

MainActivity kodlarımız;

import android.databinding.DataBindingUtil;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;

import com.serifgungor.databinding.databinding.MainActivityBinding;

public class MainActivity extends AppCompatActivity {

private MainActivityBinding activityMainBinding;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main_activity);

activityMainBinding = DataBindingUtil
.setContentView(this, R.layout.main_activity);
User user = new User();
user.setEmail("contact@serifgungor.com");
activityMainBinding.setUser(user);

}
}
Bu makaleyi paylaşın:

3 Comments

Bir yorum bırakın