[Android][Jetpack] Databinding - YunByungKwan/Fundamental GitHub Wiki
데이터 바인딩(DataBinding)에 대해서 설명
데이터 바인딩은 레이아웃 파일에서 선언적으로 View에 데이터를 결합할 수 있도록 도와주는 라이브러리입니다. 데이터 바인딩의 원리는 텍스트뷰에 맵핑하는 걸 예로 들어 보면 처음에 레이아웃 파일에서 최상위 레이아웃을 layout태그로 감싸면, 레이아웃에 대한 Binding클래스가 생성되고 BindingImpl 클래스도 생성이 됩니다. 실제 데이터의 맵핑은 BindingImpl클래스에서 이루어집니다. 제가 실제로 확인해봤을때 BindingImpl클래스의 executeBindings 함수 내부에서 TextViewBindingAdapter의 setText()함수를 사용해서 맵핑되는 것으로 봤습니다.
BindingAdapter가 무엇인지 설명
BindingAdapter는 View의 attribute를 정의하고 로직을 작성하는데 사용됩니다. BindingAdapter어노테이션을 붙여서 정의하며 안드로이드의 기본적인 View들은 이미 BindingAdapter가 정의되어 있습니다. 만약 View의 기본 attribute와 BindingAdapter로 새롭게 정의한 attribute가 서로 겹치는 경우 새롭게 정의한 attribute가 우선 적용되는 특징이 있습니다.
Two-way-databinding에 대해 설명
Two-way-databinding은 @={} 으로 사용합니다. Two-way-databinding을 사용하면 ViewModel이 있는 경우에 View에서 ViewModel로 데이터 전달이 가능합니다.