-
[Android] 안드로이드 View Binding(뷰바인딩)안드로이드 2021. 12. 22. 19:52728x90반응형
View Binding(뷰 바인딩)이란..?
뷰 바인딩은 뷰와 상호 작용하는 코드를 보다 쉽게 작성할 수 있는 기능입니다. 모듈에서 뷰 바인딩이 활성화되면 해당 모듈에 있는 각 XML 레이아웃 파일에 대한 바인딩 클래스를 생성합니다. 바인딩 클래스의 인스턴스에는 해당 레이아웃에 ID가 있는 모든 보기에 대한 직접 참조가 포함되어 있습니다.
뷰 바인딩은 Android Studio 3.6 Canary 11 이상에서만 사용할 수 있습니다.
findViewById와의 차이점
- Null Safety: View Binding은 뷰의 직접 참조를 생성하므로 유효하지 않은 뷰 ID로 인해 null 포인터 예외가 발생할 위험이 없습니다. 또한 레이아웃의 일부 구성에만 뷰가 있는 경우 결합 클래스에서 참조를 포함하는 필드가 @Nullable로 표시됩니다.
- Type Safety: 각 바인딩 클래스에 있는 필드의 유형이 XML 파일에서 참조하는 뷰와 일치합니다. 즉, 클래스 변환 예외가 발생할 위험이 없습니다.
이러한 차이점은 레이아웃과 코드 사이의 비호환성으로 인해 런타임이 아닌 컴파일 시간에 빌드가 실패하게 된다는 것을 의미합니다.
Setup
app/build.gradle에 추가
안드로이드 스튜디오 버전 3.6 이상
android { ... //뷰바인딩 viewBinding { enabled = true } ... }
안드로이드 스튜디오 버전 4.0 이상
android { ... //뷰바인딩 buildFeatures { enabled = true } ... }
Usage
build.gradle에 대해 보기 바인딩이 활성화된 경우 모듈에 포함된 각 XML 레이아웃 파일에 대해 바인딩 클래스가 생성됩니다. 각 바인딩 클래스에는 루트 보기 및 ID가 있는 모든 보기에 대한 참조가 포함됩니다. 바인딩 클래스의 이름은 XML 파일의 이름을 Pascal 대소문자로 변환하고 끝에 "Binding"이라는 단어를 추가하여 생성합니다.
만약 뷰에 해당하는 id값이 없다면 바인딩 클래스에 이에 대한 참조가 없어, 뷰 바인딩을 사용할 수 없습니다.
Use view binding in activities
모든 바인딩 클래스에는 해당 레이아웃 파일의 최상위 뷰에 대한 직접 참조를 제공하는 getRoot() 메서드도 포함되어 있습니다. 이 예제에서 ResultProfileBinding 클래스의 getRoot() 메서드는 LinearLayout 최상위 뷰를 반환합니다.
액티비티와 함께 사용할 바인딩 클래스의 인스턴스를 설정하려면 액티비티의 onCreate() 메서드 안에서 다음 단계를 수행합니다.
1. 생성된 바인딩 클래스에 포함된 inflate() 메서드를 호출합니다. 그러면 활동이 사용할 바인딩 클래스의 인스턴스가 생성됩니다.
2. getRoot() 메서드를 호출하거나 Kotlin 속성 구문을 사용하여 최상위 뷰에 대한 참조를 가져옵니다.
3. 최상위 뷰를 setContentView()에 전달하여 화면에서 활성화된 뷰로 만듭니다.이제 바인딩 클래스의 인스턴스를 사용하여 뷰를 참조할 수 있습니다.
반응형참조
안드로이드 개발자 문서728x90반응형'안드로이드' 카테고리의 다른 글
[Android] API Key값 관리 (0) 2022.01.04 [Android] 안드로이드 4대 컴포넌트 (0) 2022.01.03 [Android][Kotlin] BCrypt 암호화 알고리즘 (0) 2021.07.16 [Android][Kotlin] apply, let, also, with, run 함수 정리 (2) 2021.07.15 [Android][Kotlin] : Retrofit (MVVM 코루틴) (0) 2021.07.15