Register now for Android Dev Summit 2019!

데이터 바인딩 라이브러리

Android Jetpack의 일부인 데이터 결합 라이브러리

데이터 결합 라이브러리는 프로그래매틱 방식이 아니라 선언적 형식으로 레이아웃의 UI 구성요소를 앱의 데이터 소스와 결합할 수 있는 지원 라이브러리입니다.

레이아웃은 주로 UI 프레임워크 방식을 호출하는 코드가 포함된 활동에서 정의됩니다. 예를 들어 아래 코드는 findViewById()를 호출하여 TextView 위젯을 찾고 viewModel 변수의 userName 속성과 결합합니다.

Kotlin

    findViewById<TextView>(R.id.sample_text).apply {
        text = viewModel.userName
    }

    

자바

    TextView textView = findViewById(R.id.sample_text);
    textView.setText(viewModel.getUserName());

    

다음 예시는 데이터 결합 라이브러리로 레이아웃 파일에서 직접 위젯에 텍스트를 할당하는 방법을 보여줍니다. 이 방법을 사용하면 위에 나와 있는 자바 코드를 호출할 필요가 없습니다. 할당 표현에서 사용되는 @{} 구문을 참고하세요.

<TextView
        android:text="@{viewmodel.userName}" />
    

레이아웃 파일에서 구성요소를 결합하면 활동에서 많은 UI 프레임워크 호출을 삭제할 수 있으며 이로 인해 파일이 더욱 간소화되고 유지관리 또한 쉬워집니다. 앱 성능이 향상되며 메모리 누수 및 null pointer exceptions를 방지할 수 있습니다.

데이터 결합 라이브러리 사용

다음 페이지를 통해 사용자 Android 앱에서 데이터 결합 라이브러리를 사용하는 방법을 알아보세요.

시작하기
Android 스튜디오의 데이터 결합 코드 지원을 비롯하여 개발 환경에서 데이터 결합 라이브러리를 함께 사용하도록 준비하는 방법을 자세히 알아봅니다.

레이아웃 및 바인딩 수식

표현식 언어로 레이아웃의 보기와 변수를 연결하는 표현식을 작성할 수 있습니다. 데이터 결합 라이브러리는 데이터 객체와 레이아웃의 보기를 결합하는 데 필요한 클래스를 자동으로 만듭니다. 라이브러리가 가져오기, 변수 및 포함과 같이 레이아웃에서 사용할 수 있는 기능을 제공합니다.

라이브러리의 이러한 기능은 기존 레이아웃과 원활하게 공존합니다. 예를 들어 표현식에서 사용할 수 있는 결합 변수는 UI 레이아웃 루트 요소의 동위 요소인 data 요소에서 정의됩니다. 이 두 요소 모두 아래 예시처럼 layout 태그로 래핑됩니다.

<layout xmlns:android="http://schemas.android.com/apk/res/android"
            xmlns:app="http://schemas.android.com/apk/res-auto">
        <data>
            <variable
                name="viewmodel"
                type="com.myapp.data.ViewModel" />
        </data>
        <ConstraintLayout... /> <!-- UI layout's root element -->
    </layout>
    

관찰 가능한 데이터 객체로 작업
데이터 결합 라이브러리는 데이터의 변경을 손쉽게 관찰하기 위한 클래스와 방식을 제공합니다. 기반 데이터 소스가 변경될 때 UI 새로고침에 관해 걱정할 필요는 없습니다. 변수 또는 속성을 관찰 가능하게 만들 수 있습니다. 라이브러리로 객체, 필드 및 모음을 관찰 가능하게 만들 수 있습니다.
생성된 바인딩 등급
데이터 결합 라이브러리는 레이아웃의 변수와 보기에 액세스하는 데 사용할 결합 클래스를 생성합니다. 이 페이지는 생성된 결합 클래스를 사용 및 맞춤설정하는 방법을 보여줍니다.
바인딩 어댑터
모든 레이아웃 표현식에는 해당 속성 또는 리스너를 설정하기 위해 필요한 프레임워크 호출을 만드는 결합 어댑터가 있습니다. 예를 들어, 결합 어댑터는 텍스트 속성을 설정하는 setText() 방식을 호출하거나 setOnClickListener() 방식을 호출하여 클릭 이벤트에 리스너를 추가합니다. 이 페이지의 예제에서 사용한 android:text 속성의 어댑터와 같은 가장 일반적인 결합 어댑터는 android.databinding.adapters 패키지에서 사용할 수 있습니다. 일반적인 결합 어댑터 목록은 어댑터를 참조하세요. 다음 예시와 같이 맞춤 어댑터도 만들 수 있습니다.

Kotlin

    @BindingAdapter("app:goneUnless")
    fun goneUnless(view: View, visible: Boolean) {
        view.visibility = if (visible) View.VISIBLE else View.GONE
    }

    

자바

    @BindingAdapter("app:goneUnless")
    public static void goneUnless(View view, Boolean visible) {
        view.visibility = visible ? View.VISIBLE : View.GONE;
    }

    
아키텍처 구성요소에 레이아웃 보기 연결
Android 지원 라이브러리에는 강력하고 테스트 및 유지 관리할 수 있는 앱을 만드는 데 사용되는 아키텍처 구성요소가 포함됩니다. 아키텍처 구성요소를 데이터 결합 라이브러리와 함께 사용하여 UI 개발을 한층 간소화할 수 있습니다.
양방향 데이터 바인딩
데이터 결합 라이브러리는 양방향 데이터 결합을 지원합니다. 이 결합 유형에 사용되는 표기법은 속성에 데이터 변경을 수신하는 동시에 해당 속성의 사용자 업데이트를 감지하는 기능을 지원합니다.

추가 리소스

데이터 결합에 대한 자세한 내용은 다음 자료를 참조하세요.

샘플

Codelab

블로그 게시물