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