안드로이드 스튜디오 4.1 버전이 릴리즈되고 kotlin extension 플러그인이 디폴트에서 해제되었다는 것을 알게되었다. 많은 문제점이 내재되었다는 것은 알고 있었으나 정작 사라지니 불편하기 짝이 없어서 내 코드에 findView뭐시기를 절대 안 쓰겠다는 마음가짐 하에 View Binding을 배우게 되었고 이를 공유하고자 한다.
View Binding을 사용하면 XML과 쉽게 상호작용할 수 있는 코드를 작성할 수 있다. XML 안에 있는 내용은 View Binding을 사용하면 해당 액티비티에 관련된 Binding Class를 생성하고 이 멤버 변수(View의 id 값)에 접근함으로써 View에 접근할 수 있다.
참고로 이번에는 Activity에서 View Binding을 사용하는 방법을 보여주고자 한다. Fragment에서도 Activity와 마찬가지로 inflate되는 곳에서 binding을 설정해주면 된다.
이 View Binding은 Android Studio 3.6 이상에서 작동이 보장된다.
android {
...
viewBinding {
enabled = true
}
}
안드로이드 root 안에 viewBinding 태그를 만들고 enabled 속성을 true로 준다
View Binding을 사용하고자 하는 Activity에 Binding Class 변수를 선언한다.
private lateinit var binding: ActivityMainBinding
그리고 onCreate 단계에서 inflate 메서드를 호출하여 Binding Class 변수를 초기화한다.
override fun onCreate(savedInstanceState: Bundle) {
super.onCreate(savedInstanceState)
binding = ResultProfileBinding.inflate(layoutInflater)
}
그리고 binding 변수의 root 뷰를 가져와서 setContentView 메서드의 인자로 전달한다
override fun onCreate(savedInstanceState: Bundle) {
super.onCreate(savedInstanceState)
binding = ResultProfileBinding.inflate(layoutInflater)
val view = binding.root
setContentView(view)
}
이제 binding 변수를 어떻게 생성하면 될까? 이전 extension과 마찬가지로 binding 내의 view를 id로 참조하면 된다.
binding.view_id.attribute = anyString