개념
findViewById를 대체하는 새로운 방식
뷰 결합 기능을 사용하면 뷰와 상호작용하는 코드를 쉽게 작성
모듈에서 사용 설정된 뷰 결합은 모듈에 있는 각 XML 레이아웃 파일의 결합 클래스를 생성
결합클래스란 쉽게말해 XML과 JAVA코드를 하나로 묶은 클래스라는것
바인딩 클래스의 인스턴스에는 상응하는 레이아웃에 ID가 있는 모든 뷰의 직접 참조가 포함됩니다.
설정
build.gradle에 다음을 입력
android {
...
viewBinding {
enabled = true
}
}
결합 클래스를 생성하는 동안 레이아웃 파일을 무시하려면 tools:viewBindingIgnore="true" 속성을
레이아웃 파일의 루트 뷰(메인액티비티XML을 의미한다)에 추가하세요.
<LinearLayout
...
tools:viewBindingIgnore="true" >
...
</LinearLayout>
사용
모듈에 뷰 결합을 사용하도록 설정되면 모듈에 포함된 각 XML 레이아웃 파일의 결합 클래스가 생성됩니다.
각 결합 클래스에는 루트 뷰 및 ID가 있는 모든 뷰의 참조가 포함됩니다. 결합 클래스의 이름은 XML 파일의 이름을 카멜 표기법으로 변환하고 끝에 'Binding'을 추가하여 생성됩니다.
예를 들어 레이아웃 파일 이름이 result_profile.xml인 경우 다음과 같습니다.
<LinearLayout ... >
<TextView android:id="@+id/name" />
<ImageView android:cropToPadding="true" />
<Button android:id="@+id/button"
android:background="@drawable/rounded_button" />
</LinearLayout>
생성된 결합 클래스 이름은 ResultProfileBinding이 됩니다. 이 클래스에는 name이라는 TextView와 button이라는 Button 등 두 필드가 있습니다. 레이아웃의 ImageView에는 ID가 없으므로 결합 클래스에 참조가 없습니다.
또한 모든 결합 클래스에는 상응하는 레이아웃 파일의 루트 뷰에 관한 직접 참조를 제공하는 getRoot() 메서드가 포함됩니다. 이 예에서는 ResultProfileBinding 클래스의 getRoot() 메서드가 LinearLayout 루트 뷰를 반환합니다.
다음 섹션에서는 생성된 결합 클래스를 활동 및 프래그먼트에서 사용하는 방법을 보여줍니다.
참조문서
https://developer.android.com/topic/libraries/view-binding?hl=ko
'Android' 카테고리의 다른 글
Retrofit2 cache & Wireshark packet capture (0) | 2023.03.20 |
---|---|
retrofit2 okhttp response의 글자가 깨진다면 (0) | 2023.03.16 |
Android Fragment lifeCycle (0) | 2023.02.23 |
Android 내 현재 위치를 기반으로 주변 상점검색, GPS, 구글맵, retrofit2 (0) | 2023.02.16 |
Android [포스팅앱 1.0] Glide 리사이클뷰 좋아요 mySQL, mySQL S3 포스팅 insert, 카메라 앨범 권한, 로그인 회원가입 자동로그인, ProgressDialog, Retrofit2 restful API (0) | 2023.02.15 |