Android의 ViewBinding은 XML 파일과 코틀린 코드를 Binding하여 효율적으로 레이아웃을 관리할 수 있게 해주는 기술이다.
ViewBinding을 사용하면 기존에 findViewById() 메서드를 통해서 View들에 접근하는 방식보다 쉽게 접근할 수 있다.
ViewBinding
reslayout 폴더에 있는 xml 파일 하나당 하나의 클래스가 만들어진다.
이 클래스에는 xml 파일이 가지고 있는 View들을 관리하는 기능이 들어가 있다.
이를 통해면 개발자가 View를 직접 추출하지고 사용할 수 있다.
안드로이드 OS가 알아서 View를 추출하여 변수에 담아준다.
ViewBinding을 사용하기 위해서는 일단
앱 수준의 Gradle 파일에 ViewBinding 세팅을 위한 다음 코드를 작성해야 한다.
android {
...
viewBinding {
enabled = true
}
}
ViewBinding을 활성화하면 XML 파일의 이름에 대응하는 ViewBinding 클래스가 자동으로 생성되는데, 예시는 다음과 같다.
다음은 ViewBinding을 이용해 작성한 예시 코드이다.
class MainActivity : AppCompatActivity() {
// 생성된 ViewBinding 객체에는 View의 ID와 동일한 이름의 변수가
// 만들어지고 그 변수에는 View 객체가 들어가 있다.
// ViewBinding 객체를 담을 변수
lateinit var activityMainBinding:ActivityMainBinding
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
// ViewBinding 객체를 가져온다.
// layoutInflater : XML 파일을 통해 객체를 생성하는 도구
activityMainBinding = ActivityMainBinding.inflate(layoutInflater)
// Viewbinding 객체가 관리하는 View 중에 최 상위 View를
// 지정하여 화면에 나타나게 한다.
setContentView(activityMainBinding.root)
activityMainBinding.run {
button.run{
setOnClickListener {
activityMainBinding.textView.text = "10 - 10 = ${10 - 10}"
}
}
button2.run{
setOnClickListener {
activityMainBinding.textView.text = "10 - 10 = ${10 - 10}"
}
}
button3.run{
setOnClickListener {
activityMainBinding.textView.text = "10 * 10 = ${10 * 10}"
}
}
button4.run{
setOnClickListener {
activityMainBinding.textView.text = "10 / 10 = ${10 / 10}"
}
}
}
}