DataBinding

2019. 10. 14. 10:52모바일/Android_Java

예제에염

  1. build.gradle에 데이터 바인딩 활성화
android {
    ....
    dataBinding {
        enable=true
    }
    ....
}
  1. 태그를 통해 바인딩할 클래스를 기술한다. 아래는 ~ 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>
  1. 뷰와 데이터 연결
<TextView
    android:text="@{user.name}"
    ...
<TextView
    android:text="@{String.valueOf(user.likes)}"

<ImageButton
    android:onClick="@{user::onClickLike}"
    ....
  1. 바인딩 클래스 구현 : 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);
    }
}
  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 오브젝트로부터 뷰에 대한 참조를 얻을 수 있다
    }

출처 : https://programmingfbf7290.tistory.com/entry/%EC%98%88%EC%A0%9C%EB%A5%BC-%ED%86%B5%ED%95%B4-%EC%95%88%EB%93%9C%EB%A1%9C%EC%9D%B4%EB%93%9C-%EB%8D%B0%EC%9D%B4%ED%84%B0-%EB%B0%94%EC%9D%B8%EB%94%A9%EC%97%90-%EB%8C%80%ED%95%B4-%EC%95%8C%EC%95%84%EB%B3%B4%EC%9E%90

'모바일 > 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