이번 포스팅에서는 안드로이드 뷰 바인딩에 대해 알아보자.
뷰 바인딩이란?
공식 문서 ↓
공식 문서에서는 View Binding을 뷰 결합이라고 번역한다.
본 포스팅에서는 뷰 바인딩이라 부르겠다.
뷰 바인딩은 findViewById()를 대체할 수 있는 View 참조 방식이다.
왜 findViewById()를 대체하는지는
'기존 View 참조 방식과의 차이점' 탭에서 설명한다.
사용해보자
✅ build.gradle(모듈 수준)에 다음과 같이 작성해준다.
● 안드로이드 스튜디오 4.0 이상
android {
...
buildFeatures {
viewBinding true
}
}
● 안드로이드 스튜디오 3.6 ~ 4.0
android {
...
viewBinding {
enabled true
}
}
뷰 바인딩은 안드로이드 스튜디오 3.6 버전 이상에서만 사용할 수 있다.
✅ Activity & Layout 세팅
먼저 레이아웃 파일부터 보자.
activity_view_binding_test.xml
<LinearLayout
...
>
<TextView
...
/>
<TextView
android:id="@+id/textView"
...
/>
<Button
android:id="@+id/button"
...
/>
</LinearLayout>
참조가 필요한 View에만 id를 작성해 주었다.
그 외에는 이번 포스팅에 불필요한 내용이니 생략한다.
레이아웃은 대충 다음과 같이 생겼다.
그 다음은 액티비티 파일이다.
ViewBindingTestActivity.java
ActivityViewBindingTestBinding binding;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
binding = ActivityViewBindingTestBinding.inflate(getLayoutInflater());
setContentView(binding.getRoot());
}
onCreate()에서 setContentView()를 지정해주는 부분을 위와 같이 변경해준다.
바인딩 클래스는 xml 파일 이름을 카멜 표기법으로 변환하고,
끝에 'Binding'을 추가하여 자동 생성된다.
그렇기에 위처럼 'ActivityViewBindingTestBinding' 클래스의 객체를 선언할 수 있다.
기존에는 setContentView()에 레이아웃 파일을 통째로 지정했지만,
바인딩 할 레이아웃을 inflate(실체화)하여 루트 뷰를 지정해준다.
✅ View 참조하여 사용하기
위 과정을 마쳤다면 이제 binding 객체를 통해
View를 곧바로 참조하여 사용할 수 있다.
binding.button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
binding.textView.setText("오스카");
}
});
위 처럼 findViewById()를 사용하지 않고도 View의 id를 통해 참조할 수 있다.
결과)
기존 View 참조 방식과의 차이점
✅ 코드량 감소
ViewBinding을 사용하면 비교적 코드량을 감소시킬 수 있다.
setContentView() 세팅하는 부분을 제외하고 보겠다.
● findViewById()
TextView textView;
Button button;
textView = findViewById(...);
button = findViewById(...);
button.setOnClickListener(...)
● ViewBinding
...Binding binding;
binding.button.setOnClickListener(...)
한 눈에 비교해봐도 ViewBinding이 훨씬 깔끔하다.
레이아웃에 View가 많으면 많을수록 이 차이는 더 극대화된다.
코드가 감소하는 것 이외에도 또 다른 장점이 존재한다.
✅ Null Safe
뷰 바인딩은 뷰의 직접 참조를 생성하므로, 유효하지 않은 뷰로 인해
Null Pointer Exception이 발생할 위험이 없다.
✅ Type Safe
바인딩 클래스에서 이미 xml 파일에 있는 뷰의 타입을 일치시키기 때문에
Class Cast Exception이 발생할 위험이 없다.
이번 포스팅에서는 뷰 바인딩에 대해 알아보았다.
처음 사용하는 문법이라면 어색하겠지만 자주 사용하다보면 익숙해진다.
이제 findViewById()는 그만 괴롭히고 바인딩에 적응해보는 것도 좋다.
'Android (안드로이드)' 카테고리의 다른 글
[Android] LiveData / MutableLiveData / 라이브 데이터 / 사용법 / 예제 (0) | 2024.02.13 |
---|---|
[Android] 데이터 바인딩 / DataBinding / 사용법 / 예제 (2) | 2024.02.12 |
[Android] HTTP 통신 라이브러리 비교 / Volley · OkHttp · Retrofit (0) | 2024.01.26 |
[Android] HTTP 통신 라이브러리 - Retrofit / 예제 / 사용법 (4) | 2024.01.25 |
[Android] HTTP 통신 라이브러리 - OkHttp / 예제 / 사용법 (2) | 2024.01.24 |