데이터 결합 라이브러리

2021. 1. 19. 19:33Android/View & Data Binding

developer.android.com/topic/libraries/data-binding?hl=ko

 

데이터 결합 라이브러리  |  Android 개발자  |  Android Developers

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

developer.android.com

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

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

KOTLIN자바

 

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

   

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

 

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

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

참고: 대부분의 경우 뷰 결합은 구현은 더 간단하고 성능은 더 우수하면서도 데이터 결합과 동일한 이점을 제공합니다. findViewById() 호출을 대체할 때 주로 데이터 결합을 사용하는 경우 뷰 결합을 대신 사용해 보십시오.

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

다음 페이지에서 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")
   
public static void goneUnless(View view, Boolean visible) {
        view
.visibility = visible ? View.VISIBLE : View.GONE;
   
}

   

아키텍처 구성요소에 레이아웃 뷰 연결Android 지원 라이브러리에는 성능이 뛰어나고 테스트와 유지관리가 쉬운 앱을 디자인하는 데 사용할 수 있는 아키텍처 구성요소가 포함되어 있습니다. 아키텍처 구성요소를 데이터 결합 라이브러리와 함께 사용하여 UI 개발을 한층 단순화할 수 있습니다.양방향 데이터 바인딩데이터 결합 라이브러리는 양방향 데이터 결합을 지원합니다. 이 결합 유형에 사용된 표기법은 속성의 데이터 변경사항을 받는 동시에 속성의 사용자 업데이트를 수신 대기하는 기능을 지원합니다.

참고 자료

데이터 결합에 관해 자세히 알아보려면 다음 추가 리소스를 참조하세요.

샘플

Codelab

블로그 게시물