일단, layout Component를 코드 단으로 고치는 과정이 매우 골칫거리 (findViewById가 대표적 예시)
그래서 layout Component를 객체화 시키지 않고 바로 사용하자. 불필요한 코드를 줄이자. 이런 느낌?
View Binding은 모듈 별로 사용 설정한다. 설정이 되면 각 xml 파일에 대해 binding class 를 자동 생성 한다.
Binding Class의 인스턴스는 ID를 가지고 있는 모든 뷰에 대한 직접적 참조를 포함한다. 그에 따라 findViewById를 사용하지 않고 대체 할 수 있다.
(kotlin에선 binding class 생성 없이 layout id값 참조하여 view 사용. 이것은 뷰 바인딩과 다른 관점..)
이 부분은 build 버전이 4 이상 간 이후에 데이터 바인딩과 비슷하다.
android {
...
buildFeatures {
viewBinding true
}
}
일단, 둘은 모두 뷰를 직접 참조하는데 사용할 수 있는 binding class 를 제공한다.
확실히 viewbinding은 보다 단순한 처리의 경우 적합.
일반적으로 안드로이드를 처음 배우면 findViewById()를 사용하여 각 view component들을 객체로 만들어서 사용한다.
(위의 과정을 거쳐야만 xml에 정의된 id를 가진 뷰들을 코드 단에서 사용할 수 있기에)
// java
TextView textView = (TextView) findViewById(R.id.tv_first)
// kotlin
val textView = findViewById<TextView>(R.id.tv_first)
ViewBinding과 DataBinding을 이야기 하다 보니 여러 이야기들이 나왔지만 결국 아래 표와 같이 비교하고 사용하면 된다.
꼭 무엇 하나가 좋다기보단, 프로젝트의 상황에 경우에 맞게 사용하는 것이 가장 좋을 것 같다.