viewbinding이란, view와 상호작용하는 코드를 더욱 쉽게 작성할수 있도록 도와줍니다.
모듈에
buildFeatures{
viewBinding true
}
를 작성함으로써 사용가능합니다.
또는 ,
android {
...
viewBinding {
enabled = true
}
}
과 같이 사용합니다.
MainActivity단에 가서, 사용법은 먼저 val로써 binding을 선언해줍니다.
by lazy는 지연초기화인데, 이후에 다룰 예정입니다.
binding.root는 해당 참조하는 뷰를 가리킵니다.
class MainActivity : AppCompatActivity() {
val binding by lazy {ActivityMainBinding.inflate(layoutInflater)}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(binding.root)
binding.button2.setOnClickListener {
binding.textSay.text = "Hello, Kotlin!"
}
}
}
findviewbyId와의 차이점.
* null safety : findviewbyid와 다르게, 해당뷰에대해 직접 참조하므로 잘못된 뷰 ID로 인해 NPE(Null Pointer Exception)발생할 위험이 없습니다. 또한 다른 뷰의 동일 id를 참조할 일도 없겠습니다.
* Type safety: textView의 타입을 imageView라고 잘못 적어서 캐스팅하면 cast exception이 발생할 수 있다. 이를 방지해줌.
databinding과의 차이점.
databinding과 동일하게, 뷰를 직접 참조하는 바인딩 클래스를 생성합니다.
허나,
* 더 빠른 컴파일이 가능합니다 -> annotation 프로세싱의 일부만 사용하기 때문.
* tag처리된 xml사용 불필요.
-> 즉 단순 findviewbyid를 대체하기 위해서라면 viewbinding사용.
데이터 바인딩은 뷰 바인딩의 역할도 할 수 있을뿐더러 추가로 동적 UI 콘텐츠 선언, 양방향 데이터 결합도 지원.
'개발 > Android' 카테고리의 다른 글
[Android] WebView 안드로이드에서 구현하기 (0) | 2021.02.03 |
---|