viewBinding는 뷰와 상호작용할 때 보다 쉽게 접근하여 코드를 작성할 수 있게 지원하는 기능이다. 예전에 사용하던 findviewbyId(), 지금은 지원이 종료된 kotlin-android-extensions를 통해 사용하던 기능과 같다.
안드로이드 스튜디오 3.6 이상의 버전에서만 지원한다.
android {
...
viewBinding {
enabled = true
}
}
모듈에 viewBinding을 사용하도록 설정하면 모듈에 포함된 각 xml레이아웃 파일의 결합 클래스가 생성된다. 각 바인딩 클래스에는 루트 뷰 및 id가 있는 모든 뷰의 참조가 포함된다. 바인딩 클래스의 이름을 카멜 표기법으로 변환하고 끝에 Binding을 추가하여 생성된다.
실제 코드에서 사용해보면,
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
// 자동으로 완성된 Activity Main Binding 클래스를 인스턴스로 가져온다.
val activityMainBinding: ActivityMainBinding = ActivityMainBinding.inflate(layoutInflater)
// 뷰바인딩과 연결
setContentView(activityMainBinding.root)
//뷰바인딩후 뷰 컴포넌트 접근 방법
activityMainBinding.textView.text = "hello world!"
}
}