데이터 결합 라이브러리 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 개발을 한층 단순화할 수 있습니다.
- 양방향 데이터 바인딩
- 데이터 결합 라이브러리는 양방향 데이터 결합을 지원합니다. 이 결합 유형에 사용된 표기법은 속성의 데이터 변경사항을 받는 동시에 속성의 사용자 업데이트를 수신 대기하는 기능을 지원합니다.
참고 자료
데이터 결합에 관해 자세히 알아보려면 다음 추가 리소스를 참조하세요.