View Binding(뷰바인딩)
편리하게 사용 하던 코틀린 익스텐션을 2021년 부터 더 이상 사용하지않게 되면서 viewBinding으로 넘어 와야 합니다.
-코틀린 익스텐션은 위젯의 id 를 그대로 사용가능하게 해주었습니다.
gradle 설정
viewBinding을 사용하기 위해서는 viewBinding 기능을 활성화 해야합니다.
프로젝트 메뉴에서 Gradle Scripts항목의 build.gradle(Module: 프로젝트이름.app) 엽니다.
파일안의 android 블럭 안에 아래와 같이 작성합니다.
만약 dataBinding을 사용중이라면 둘다 작성할 필요없이 viewBinding 하나만 작성합니다.
- viewBinding이 dataBinding을 포함하고 있다.
- 변경된 gradle적용을 위해서는 작성후 나타나는 상단바에서 SyncNow를 클릭해야한다.
viewBinding 동작원리
viewBinding은 gradle에 사용 설정을 하게 되면 작성한 레이아웃 파일들은 모두 바인딩 클래스로 자동 변환된다.
변환시엔 아래처럼 카멜 표기법에 따라 단어의 첫글자는 대문자로 표현된다.
- activity_main_.xml -> ActivityMainBinding
- activity_sub.xml -> ActivitySubBinding
- custom_recycler.xml -> CustomRecycleBinding
클래스 이름뒤에는 Binding이 같이 붙는것을 확인 할 수 있다.
Activity에서 사용하기
Activity에서는 lazy를 사용해 최초 호출시에 초기화 되도록 binding 프로퍼티를 선언하고 사용하면 됩니다.
그리고 기존의 setContentView는 지우고 binding.root를 전달합니다.
사용시엔 아래처럼 선언한 프로퍼티 다음 id를 입력하여 사용이 가능합니다.
Adapter에서 사용하기
recyclerView에서 주로 사용되는데 adapter의 onCreateViewHolder에서 binding을 생성후 ViewHolder에 넘겨주는 방식입니다.
Fragmetn 에서 사용하기
프레그먼트는 Adapter에서 사용하는 방법과 비슷합니다. Fragment클래스안에서 먼저 lateinit으로 선언합니다.
이후 onCreateView에서 LayoutInflater를 넘겨 받습니다.
'Android' 카테고리의 다른 글
[안드로이드] 코틀린 프래그먼트 생명 주기 (0) | 2021.11.29 |
---|---|
[안드로이드] 코틀린 프레그먼트 연습 FragmentTest - ViewBinding (0) | 2021.11.29 |
[코틀린]안드로이드 runOnUiThread사용 1초마다 카운트하기 (0) | 2021.11.01 |
[코틀린] 안드로이드 코틀린 XML 소스 - string/color/dimens (0) | 2021.10.17 |
[코틀린] 안드로이드 null허용 - Null safety (0) | 2021.10.14 |