안드로이드

ViewBinding

코딩하는후운 2021. 5. 13. 13:53
반응형

현재 가장 많이 사용되는 Data Binding의 목적은 View와 Model을 엮어주는 역할인데

많은 개발자들이 단순히 View에 대한 참조를 얻기 위한 목적으로 Data Binding을 사용하는 것을 보고,

구글에서 View에 대한 참조를 얻기 위한 목적으로 오늘의 View Binding이 탄생하게 되었다고 한다.

 

특징

- Null안전 : 뷰의 직접 참조를 생성하므로 유효하지 않은 뷰 ID로 인해 null포인터 예외가 발생할 위험이 없습니다.

또한 레이아웃의 일부 구성에만 뷰가 있는 경우 결합 클래스에서 참조를 포함하는 필드가 @Nullable로 표시됩니다.

 

-유형 안전 : 각 바인딩 클래스에 있는 필드의 유형이 XML파일에서 참조하는 뷰와 일치하기 때문에 클래스 변환 예외가 발생할 위험이 없습니다.

 

-빠른 컴파일 속도와 따로 xml파일에 태그가 필요하지 않고 자동으로 적용되므로 사용 편의성이 있습니다.

 

-DataBinding과 비교했을 때 레이아웃 변수 또는 레이아웃 표현식을 지원하지 않으므로 XML레이아웃 파일에서 직접 동적 UI콘텐츠를 선언하는 데 사용할 수 없습니다.

 

-양방향 데이터 결합을 지원하지 않습니다.

 

프로젝트 설정

Gradle파일 (Android Studio 4.0이상)에서는 

buildFeatures{

    viewBinding = true

}

 

View Binding in Activity

binding = ActivityMainBinding.inflate(layoutInflater)

setContentsView(binding.root)

 

binding.tvData.text = "test"

 

View Binding in Fragment

사용법은 위와 같습니다. 프래그먼트의 생명주기에서 자신의 UI를 그리기 시작하는 부분인 onCreateView에서 바인딩을 시켜주고 binding객체의 root를 리턴해 넘겨줍니다.

 

프래그먼트에서는 Nullable처리를 위해 추가적인 코드가 필요합니다.

프래그먼트는 뷰 보다 오래 지속되기 때문에 onDestroyView()에서 binding class인스턴스 null값으로 변경하여 참조를 정리해 주어야 한다.

 

 

View Binding과 Data Binding은 호환이 되기 때문에 같은 모듈에서 동시에 사용할수 있습니다.


 

 

참조 :

yoon-dailylife.tistory.com/54

반응형

'안드로이드' 카테고리의 다른 글

[Android] 이미지 로딩 라이브러리 - Coil  (0) 2021.05.17
Storage Scope  (0) 2021.05.14
Kotlin apply, with, let, also, run 사용?  (0) 2021.05.11
Android 멀티 모듈  (0) 2021.05.11
Wildcard(*) import 방지  (0) 2021.05.03