[Android] DataBinding 데이터바인딩

김민주·2022년 10월 24일
0

Android

목록 보기
10/21

DataBinding

: 선언적 형식으로 레이아웃의 UI 구성요소를 앱의 데이터 소스와 결합할 수 있는 지원 라이브러리

즉, xml파일에 data를 연결하여 사용하는 것



DataBinding 이점

👍 많은 UI 프레임워크 호출을 삭제할 수 있어 파일이 더욱 단순화되고 유지관리가 쉬워짐
👍 앱 성능이 향상되며 메모리 누수 및 null 포인터 예외를 방지함


DataBinding 사용하기

  1. build.gradle에 추가
    buildFeatures{ dataBinding true }
  2. xml layout 태그로 빼고 layout 아래 최상단 태그 <data> 생성
  3. Activity에서 binding으로 사용
  4. lifecycleOwner와 viewModel을 지정
  5. xml에서 바인딩된 뷰모델 사용가능

활용법

1. BindingAdapter

: 결합된 값이 변경될 때마다 생성된 결합 클래스는 결합 표현식을 사용하여 뷰에서 setter 메서드를 호출


👍 바인딩 어댑터를 커스텀할 수 있음


  • 값이 변경될 때 업데이트하는 메서드에 @BindingAdapter

만약 android:paddingLeft 속성에 setter를 연결하고 싶다면

@BindingAdapter("android:paddingLeft")
fun setPaddingLeft(view: View, padding: Int) {
    view.setPadding(padding,
            view.getPaddingTop(),
            view.getPaddingRight(),
            view.getPaddingBottom())
    }
  • 속성 변경과 관련된 리스너를 설정하는 메서드에 @BindingAdapter
       @BindingAdapter("app:timeAttrChanged")
    @JvmStatic fun setListeners(
            view: MyView,
            attrChange: InverseBindingListener
    ) {
        // Set a listener for click, focus, touch, etc.
    }

3. 2-way Data Binding (양방향 데이터 결합)

  • @={} 표기법은 속성과 관련된 데이터 변경사항을 받는 동시에 사용자 업데이트를 수신 대기

    <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 객체에 결합된 변수를 표시하기 전에 형식 지정, 변환 또는 변경을 하고 싶다면?

  • Converter 객체를 사용
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

profile
𝐃𝐨𝐧'𝐭 𝐛𝐞 𝐚 𝐩𝐫𝐨𝐜𝐫𝐚𝐬𝐭𝐢𝐧𝐚𝐭𝐨𝐫💫

0개의 댓글