DataBinding과 ViewBinding

수뱀 ㅣ 2025. 3. 20. 15:45

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)
이벤트 바인딩 (클릭 등) 가능함 불가능(코드에서 직접 설정해야함)