DataBinding
2019. 10. 14. 10:52ㆍ모바일/Android_Java
예제에염
- build.gradle에 데이터 바인딩 활성화
android {
....
dataBinding {
enable=true
}
....
}
- 태그를 통해 바인딩할 클래스를 기술한다. 아래는 ~ sample.User 클래스를 바인딩하되 이름을 user로 하겠다는 뜻이다.
<layout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
tools:context="com.github.advanced_android.databindingsample.MainActivity">
<data>
<!-- User 클래스에 바인딩한다 -->
<variable
name="user"
type="com.github.advanced_android.databindingsample.User"/>
</data>
- 뷰와 데이터 연결
<TextView
android:text="@{user.name}"
...
<TextView
android:text="@{String.valueOf(user.likes)}"
<ImageButton
android:onClick="@{user::onClickLike}"
....
- 바인딩 클래스 구현 : XXX.set(YYY)를 사용하면 실제 UI도 바뀌게 된다. TextView.setText() 등을 호출할 필요가 없다. XXX.get()을 하면 해당 UI 값을 얻을 수 있다. 또한 onClickLike를 xml에서 지정해 리스너 또한 별도로 구현할 필요 없다.
public class User {
public ObservableField<String> name = new ObservableField<>();
public ObservableInt age = new ObservableInt();
public ObservableInt likes = new ObservableInt();
public User(String nameString, int ageInt) {
name.set(nameString);
age.set(ageInt);
likes.set(0);
}
public void onClickLike(View view){
likes.set(likes.get() + 1);
}
}
- 클래스구현
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Binding 오브젝트를 얻는다
ActivityMainBinding binding = DataBindingUtil.setContentView(this, R.layout.activity_main);
// Binding 오브젝트에 User를 설정한다
binding.setUser(new User("kim", 25));
String date = (String) DateFormat.format("yyyy/MM/dd kk:mm:ss", Calendar.getInstance());
binding.textTime.setText(date);
//뷰에 id가 지정돼 있으면, Binding 오브젝트로부터 뷰에 대한 참조를 얻을 수 있다
}
'모바일 > Android_Java' 카테고리의 다른 글
Activity 관련 (0) | 2019.10.16 |
---|---|
Realm (0) | 2019.10.14 |
안드로이드에서 자주쓰는 함수 (0) | 2019.10.08 |
RecyclerView (0) | 2019.10.08 |
Instnaceof (0) | 2019.10.08 |