안드로이드 앱 개발에서 ViewBinding은 XML 레이아웃 파일과 JAVA 코드를 연결하는 강력한 도구입니다.
이 기능을 통해 findViewById() 메서드를 사용하지 않고 뷰 요소에 쉽게 액세스할 수 있다는 장점을 가지고 있습니다.
이번 포스팅에서는 안드로이드 스튜디오 ViewBinding을 사용하는 방법과 코드 예제를 알아보도록 하겠습니다.
ViewBinding??
출처 입력
ViewBinding은 Android Studio 3.6 Canary 11 이상에서부터 사용할 수 있는 개념인데, 이 기능을 활용하여 뷰와 상호작용을 쉽게 할 수 있습니다.
ViewBinding이 findViewById를 대체하기 때문에 레이아웃에 ID가 있는 모든 뷰의 직접 참조가 포함됩니다.
쉽게 말하면 findViewById를 이용하여 작성할 경우 뷰가 엄청 많게 되면 코드도 지저분하고 굉장히 길어진다는 단점을 ViewBinding을 이용하여 극복할 수 있다는 것입니다.
ViewBinding
ViewBinding 설정하기 위해 우선 안드로이드 스튜디오 프로젝트의 build.gradle 파일에서 아래와 같이 ViewBinding을 활성화합니다.
android {
...
viewBinding {
enabled = true
}
}
그다음 XML 레이아웃 파일을 하나 생성해 줍니다. 레이아웃 파일 이름이 main_Activity.xml인 경우 생성된 바인딩 클래스 이름은 MAINACTIVITYBINDING이 됩니다. (생성된 바인딩 클래스의 이름은 XML 파일의 이름을 기반으로 합니다)
<LinearLayout ... >
<TextView android:id="@+id/a" />
<Button android:id="@+id/b"/>
</LinearLayout>
이렇게 생성된 바인딩 클래스를 가지고 액티비티에 ViewBinding을 사용할 수 있습니다.
private ActivityMainBinding binding;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
binding = ActivityMainBinding.inflate(getLayoutInflater());
setContentView(binding.getRoot());
// 뷰 요소에 액세스하여 사용합니다.
binding.a.setText("Hello, ViewBinding!");
binding.b.setOnClickListener(new View.OnClickListener() {
---생략---
});
}
모듈에 ViewBinding을 사용하도록 설정되면 모듈에 포함된 각 XML 레이아웃 파일의 결합 클래스가 생성되고, 모든 결합 클래스에는 상응하는 레이아웃 파일의 루트뷰에 관한 직접 참조를 제공하는 getRoot() 메서드가 포함된다.
이렇게 ViewBinding을 이용하면 바인딩 클래스의 이름을 기반으로 뷰 요소에 액세스가 가능해집니다.
XML 파일에 정의된 TextView인 a에 접근하려면 binding.a로 액세스가 가능합니다.
추가적으로 궁금한 내용이 있다면 아래 개발자 페이지에서 확인해 보세요!
https://developer.android.com/topic/libraries/view-binding?hl=ko
'안드로이드 스튜디오 앱 개발 > 개념 안드로이드 스튜디오' 카테고리의 다른 글
안드로이드 스튜디오 if 문 & 비교 연산자 (0) | 2024.04.18 |
---|---|
[Android Studio] sharedPreferenced의 저장과 조회 알아보기!! (예제 포함) - 망댕이의 앱 개발 (0) | 2024.04.16 |
[Android Studio] 안드로이드 스튜디오 핸들러(Handler)를 이용한 딜레이 적용하기 (0) | 2023.07.24 |
[Android Studio] 안드로이드 스튜디오 프레임 레이아웃 (FrameLayout)에 대해 알아보자 (0) | 2023.07.24 |
[Android Studio] 뷰결합(viewBinding)에 대해 알아보자, 뷰결합 초간단 설정 방법 (0) | 2023.07.13 |