1. 데이터 바인딩(Data Binding)
레이아웃 XML과 ViewModel(또는 데이터) 간의 양방향 데이터 바인딩을 지원한다
LiveData, ViewModel과 함께 사용하여 UI 갱신을 자동화할 수 있다.
XML에서 직접 @{} 표현식을 사용하여 데이터를 바인딩할 수 있음
클릭 이벤트나 함수 호출을 XML에서 직접 처리할 수 있다.
사용예시)
XML
//XML
<TextView
android:text="@{viewModel.userName}" />
ViewModel
//ViewModel
class MyViewModel : ViewModel() {
val userName = MutableLiveData("홍길동")
}
2. 뷰 바인딩(View Binding)
"findViewById()"를 대체하는 안전한 뷰 참조 기능을 제공한다
XML과 직접적으로 데이터 바인딩되지 않고, 코드에서 View 객체를 더 쉽게 다룰 수 있도록 합니다.
binding.textView.text = "Hello" 같은 방식으로 UI를 업데이트합니다.
사용예시)
val binding = ActivityMainBinding.inflate(layoutInflater)
setContentView(binding.root)
binding.textView.text = "Hello"
3. 데이터바인딩(Data Binding) VS 뷰 바인딩(View Binding)
| 기능 | DataBinding | ViewBinding |
| jetPack 기술 | ✅ | ✅ |
| XML에서 데이터 연결 | ✅ (@{} 사용) | ❌ |
| findViewById() 대체 | ✅ | ✅ |
| UI 업데이트 | 자동(LiveData, Observable) | 수동(binding.textView.text) |
| 이벤트 바인딩 (클릭 등) | 가능함 | 불가능(코드에서 직접 설정해야함) |