상세 컨텐츠

본문 제목

[Java:Android Studio] 만들면서 배우는 Java로 ViewBinding 활용하기

Kotlin|Java

by donggyu1998 2021. 7. 20. 01:03

본문

반응형

💡 글에서는 Android Studio를 활용하여 Java코드로 작성하고있습니다.

💡 [실행화면]

💡 [코드]

💡 View Binding이란?

뷰 바인딩(View Binding) 은 뷰와 상호 작용하는 코드를보다 쉽게 ​​작성할 수있는 기능입니다.

모듈의 build.gradle에서 뷰 바인딩 속성이 활성화되면 해당 모듈에있는 각 XML 레이아웃 파일에 대한 바인딩 클래스가 자동으로 생성됩니다.

바인딩 클래스 인스턴스에는 해당 레이아웃에 ID가 있는 모든 뷰에 대해 직접적으로 참조됩니다.

대부분 경우에 있어, 뷰 바인딩을 사용하는 것으로 findViewById 메서드를 대체할 수 있습니다.

뷰바인딩은 Android Studio 3.6부터 사용가능합니다.

 

build.gradle -> android 내부에 viewBinding 내용을 추가합니다.

View Binding을 사용하기 위해서는 안드로이드 스튜디오 버전에 따라 다음과 같은 코드를 추가해야 합니다.

안드로이드 프로젝트를 최초 생성했을 때에는 viewBinding이나 buildFeatures 속성이 존재하지 않습니다.

해당 속성은 android 속성 내부 어디에든 위치할 수 있습니다. Gradle 파일 변경 이후에는 꼭 Sync Now를 눌러줍시다.

// Available in Android Gradle Plugin 3.6.0
android {
    ...
    viewBinding {
        enabled = true
    }
}

// Android Studio 4.0
android {
    ...
    buildFeatures {
        viewBinding = true
    }
}

 

뷰 바인딩 사용 제외

특정 레이아웃 파일을 클래스로 바인딩하고 싶지 않다면 해당 파일의 root view에 tools:viewBindingIgnore="true" 속성을 추가하세요! 이때 레이아웃 네임 스페이스로 toolsNS가 추가되어 있어야 합니다.

 

<LinearLayout
        ...
        xmlns:tools="http://schemas.android.com/tools"
        tools:viewBindingIgnore="true" >
    ...
</LinearLayout>

 

findViewById와 View Binding의 차이

  • Null Safety: findViewById 사용 시 Null Pointer Exception이 발생할 실수를 컴파일 타임에 잡아낼 수 있습니다.
  • Type Safety: findViewById 사용 시 Class Cast Exception이 발생할 실수를 컴파일 타임에 잡아낼 수 있습니다.

Data Binding과 View Binding의 차이

뷰 바인딩과 데이터 바인딩은 모두 클래스를 바인딩하여 뷰를 직접 참조할 수 있습니다.

뷰 바인딩은 데이터 바인딩보다 간단한 use case를 처리할 목적으로 설계되었고, 데이터 바인딩과 비교했을 때 다음과 같은 이점이 있습니다.

  • 빠른 생성: 뷰 바인딩은 별도의 어노테이션 프로세싱이 필요하지 않아 컴파일 시간이 단축됩니다.
  • 간단한 사용: 뷰 바인딩은 데이터 바인딩의 <Layout>, <data> 태그와 같은 특수한 XML 태그를 사용하지 않기 때문에, 더욱 빠르게 앱에 적용할 수 있습니다. 모듈 gradle 파일에서 허용하기만 하면, 모듈 내의 모든 레이아웃 파일에 자동으로 뷰 바인딩이 적용됩니다.

데이터 바인딩

  • layout variable, layout expression 지원: 데이터 바인딩은 레이아웃 변수, 표현식 등을 통해 XML 내에서 다이내믹 UI 콘텐츠를 표현할 수 있습니다.
  • Two-way Data Binding: 양방향 데이터 바인딩을 통해 뷰에서 생성된 값을 뷰 모델에 전달할 수도 있습니다.

두 기능의 장단점을 모두 이용하고 싶다면, 한 프로젝트에 뷰 바인딩과 데이터 바인딩을 모두 적용하는 것도 가능합니다. 일반적인 상황에서는 뷰 바인딩을 사용하고, 다이내믹 UI가 필요한 부분에는 데이터 바인딩을 적용할 수 있습니다.

반응형

관련글 더보기