: 선언적 형식으로 레이아웃의 UI 구성요소를 앱의 데이터 소스와 결합할 수 있는 지원 라이브러리
즉, xml파일에 data를 연결하여 사용하는 것
👍 많은 UI 프레임워크 호출을 삭제할 수 있어 파일이 더욱 단순화되고 유지관리가 쉬워짐
👍 앱 성능이 향상되며 메모리 누수 및 null 포인터 예외를 방지함
buildFeatures{ dataBinding true }
<data>
생성: 결합된 값이 변경될 때마다 생성된 결합 클래스는 결합 표현식을 사용하여 뷰에서 setter 메서드를 호출
👍 바인딩 어댑터를 커스텀할 수 있음
만약 android:paddingLeft
속성에 setter를 연결하고 싶다면
@BindingAdapter("android:paddingLeft")
fun setPaddingLeft(view: View, padding: Int) {
view.setPadding(padding,
view.getPaddingTop(),
view.getPaddingRight(),
view.getPaddingBottom())
}
@BindingAdapter("app:timeAttrChanged")
@JvmStatic fun setListeners(
view: MyView,
attrChange: InverseBindingListener
) {
// Set a listener for click, focus, touch, etc.
}
@={}
표기법은 속성과 관련된 데이터 변경사항을 받는 동시에 사용자 업데이트를 수신 대기 <CheckBox
android:id="@+id/rememberMeCheckBox"
android:checked="@{viewmodel.rememberMe}"
android:onCheckedChanged="@{viewmodel.rememberMeChanged}"
/>
위의 단방향 DataBinding을 양방향 DataBinding으로 바꾸면
<CheckBox
android:id="@+id/rememberMeCheckBox"
android:checked="@={viewmodel.rememberMe}"
/>
프로세스의 바로가기를 제공함🤗
📍 View 객체에 결합된 변수를 표시하기 전에 형식 지정, 변환 또는 변경을 하고 싶다면?
android:text="@={Converter.dateToString(viewmodel.birthDate)}"
https://developer.android.com/topic/libraries/data-binding/two-way?hl=ko
https://developer.android.com/topic/libraries/data-binding?hl=ko