이제 Android 11 개발자 프리뷰를 사용할 수 있습니다. 테스트해 보고 의견을 공유하세요.

데이터 결합 라이브러리   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 포인터 예외를 방지할 수 있습니다.

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

다음 페이지에서 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 개발을 한층 단순화할 수 있습니다.
양방향 데이터 결합
데이터 결합 라이브러리는 양방향 데이터 결합을 지원합니다. 이 결합 유형에 사용된 표기법은 속성의 데이터 변경사항을 받는 동시에 속성의 사용자 업데이트를 수신 대기하는 기능을 지원합니다.