Viewbinding
문과생이지만, 개발자와 데이터 분석가가 되고싶어요.
인사말
안녕하세요. Devjunku입니다. 이번 프로젝트는 웹이 아닌 앱으로 진행 하게 되었습니다. 사실 웹의 경우 Frontend를 vue2,3 말고는 사용하진 않아서 조금 더 공부하고 싶은 프레임워크가 있긴 했지만, 예전부터 항상 마음속에 있었던 앱을 공부할 기회를 져버릴 수 없었기 때문에, 이번에는 웹이 아닌 앱으로 처음 개발을 시작하게 되었습니다. 그렇게 처음으로 코틀린과 안드로이드를 공부하고 있는데, 어떻게 보면 웹보다는 앱이 훨씬 더 생태계가 빠르게 변하고 있다는 생각이 드네요. 그래서 오늘은 findViewById()가 아닌 viewBinding을 사용하라고 권장하는 안드로이드 4.1에서의 viewBinding에 대한 개념을 이야기해보려 합니당. 아직 많이 서툴고 모르는 분야이기에 제가 잘 모를 수도 있고, 항상 배워야한다는 생각입니다. 좋게 봐주셨으면 좋겠습니다.
출처: https://www.youtube.com/watch?v=1xJmh2QhYTU
뷰바인딩의 필요성
- 뷰의 요소를 불러오기 위해서는 findViewByid()를 사용한다.
- Kotlin-Android-extensions를 사용하면 findViewByid를 생략하고 바로 해당 뷰를 불러올 수 있다.
- 문제는 서로 다른 xml에서 같은 id가 사용된 코드의 경우 Kotlin-Android-extensions에 의해 불러온 id가 무엇을 의미하는지 혼동을 야기할 수 있다.
- 그래서 구글에서는 안드로이드 스튜디오 4.1부터 Kotlin-Android-extensions지원을 중단하고 viewBinding을 사용하라고 안내하고 있다.
뷰바인딩이란?
- 뷰 바인딩을 활성화하면, 각 xml 파일에 대해 ViewBinding을 상속받는 클래스가 자동으로 생성된다.
- onCreate() 안에서 바인딩 클래스의 인스턴스를 생성하고 인스턴스가 뷰의 id를 프로퍼티로 제공하게 된다.
뷰바인딩의 장점
- Null-Safe: 뷰 바인딩은 서로 다른 layout과 같은 ID를 가진 뷰를 정확히 구분할 수 있다. 만약에 그럴 수 없다면, @Nullable로 만들어 사용할 수 없게 한다.
- Type-Safe: findViewById를 사용할 경우 뷰에 잘못된 타입을 지정할 오류가 있는데, 뷰 바인딩에서는 그런 문제가 발생하지 않는다.