개념
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 | 
 
                    
                  