Android/Data Binding

[안드로이드 Data Binding] 시작하기

정코드 2019. 5. 19. 19:35


조건


API 레벨 14 이상 (Android 4.0)


Android Studio 버전 1.5.0 이상



설정


SDK Manager에서 Support Repository 다운로드


app의 build.gradle 파일에 dataBinding 추가


1
2
3
4
5
6
android {
...
    dataBinding {
        enabled = true
    }
}
cs



activity_main.xml


Data Binding의 레이아웃 파일은 layout 태그로 시작하고, 그 뒤에 data 요소와 view 요소를 사용합니다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android">
    <data>
        <variable name="main" type="com.example.MainActivity"/>
    </data>
 
    <LinearLayout
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
 
        <TextView
            android:id="@+id/text_one"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@{main.textOne}" />
 
        <TextView
            android:id="@+id/text_two"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />
    </LinearLayout>
</layout>
cs


data 내에 있는 main 변수를 이 레이아웃 내에서 사용할 수 있습니다.



MainActivity.java


레이아웃 파일명이 activity_main이므로 ActivityMainBinding 클래스가 생성됩니다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import android.os.Bundle;
 
import androidx.appcompat.app.AppCompatActivity;
import androidx.databinding.DataBindingUtil;
 
import com.example.databinding.ActivityMainBinding;
 
public class MaActivity extends AppCompatActivity {
    public final String textOne = "textOne";
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        ActivityMainBinding mBinding = DataBindingUtil.setContentView(this, R.layout.activity_main);
        mBinding.setMain(this);
        mBinding.textTwo.setText("example");
    }
}
cs



다른 예제


User.java


1
2
3
4
5
6
7
8
public class User {
public final String firstName;
public final String lastName;
    public User(String firstName, String lastName) {
        this.firstName = firstName;
        this.lastName = lastName;
    }
}
cs


main_activity.xml


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android">
    <data>
        <variable name="user" type="com.example.User"/>
    </data>
 
    <LinearLayout
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
 
        <TextView android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@{user.firstName}"/>
 
        <TextView android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@{user.lastName}"/>
    </LinearLayout>
</layout>
cs


MainActivity.java


1
2
3
4
5
6
7
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    ActivityMainBinding binding = DataBindingUtil.setContentView(this, R.layout.activity_main);
    User user = new User("Test""User");
    binding.setUser(user);
}
cs




출처


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