일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- Android Jetpack
- WebView
- Android ViewPager2
- MVP Architecture
- 안드로이드 fcm
- Android 12
- 안드로이드 갤러리 접근
- android recyclerview
- 프로그래머스 알고리즘
- Android
- Kotlin
- Android WebView
- 안드로이드
- 습관만들기
- 66챌린지
- OkHttp Interceptor
- 영어독립365
- Android Interceptor
- 영어공부
- 알고리즘 자바
- 안드로이드 카카오 로그인
- 카카오 알고리즘
- Kotlin FCM
- Android DataBinding
- Android ProgressBar
- Java
- DataBinding
- Android 12 대응
- scope function
- Android Navigation
- Today
- Total
Developer Geek
[Android] DataBinding 이란 본문
개요
이 DataBinding Tutorial에서는 레이아웃의 구성 요소와 직접 상호 작용하고, 값을 할당하고, Binding Adapter를 사용하여 View
에서 발송되는 이벤트를 처리하는 방법을 다룬다.
DataBinding은 Android Jetpack의 일부이다. DataBinding 라이브러리는 레이아웃의 구성요소(View
)를 데이터와 쉽게 바인딩 할 수 있는 방법을 제공한다. 구체적으로는 프로그래밍 방식으로 데이터를 뷰에 바인딩하는 대신에 선언 형식을 이용해서 바인딩 할 수 있다.
구현 예제 앱 기능
SpaceX rockets
, crew
, dragons
and capsules
의 정보를 나타내는 4가지 리스트를 보여준다.
왜 DataBinding을 사용해야해?
기본적으로 코드와 레이아웃 사이의 상호작용은 Activity
또는 Fragment
에서 findViewById()
를 통해사 사용된다.
최근에는 ViewBinding을 사용한 경우, UI 컴포넌트를 참조하고 함수와 리스너를 사용해서 코드와 레이아웃 간의 상호작용을 할 수 있다. 하지만 ViewBinding을 이용하더라도 UI 컴포넌트에 접근하고 수정하는데 있어 많은 코드가 발생한다.
하지만 Android Jetpack 에서 제공하는 DataBinding 라이브러리를 사용한다면 레이아웃 파일에서 직접 컴포넌트와 상호작용할 수 있다.
DataBinding 이해하기
DataBinding을 이용하면 Binding expression을 통해서 해당 View에 값을 할당하기도 하고 이벤트를 붙일 수 있다. Binding expression의 하나의 방식으로는 android:text"@{viewModel.value}"
있다. 이 expression은 해당 레이아웃에게 android:text
값으로 viewModel.value
값을 가지라는 표현이다. 레이아웃에 코드 로직을 바인드 하는데 있어 Object
, ViewModel
또는 각각의 variables
를 사용할 수 있다.
Binding Adapter는 우리의 코드를 레이아웃에 바인드 할 수 있도록 하는 역할을 한다. 기본 바인딩 어댑터는 setter
를 호출하여 view
에 값을 할당하는 반면, Advanced 바인딩 어댑터는 데이터 바인딩을 수행하는 동안 실행할 로직을 추가한다.
아래 다이어그램은 데이터 바인딩 프로세스에서 바인딩 어댑터의 위치를 잘 나타낸다.
참고
'안드로이드 > Jetpack' 카테고리의 다른 글
Navigation Basic Sample in Kotlin (0) | 2022.07.15 |
---|---|
[Android] Custom Binding Adapter Example in Kotlin (0) | 2022.07.05 |
[Android] DataBinding 예제 (0) | 2022.06.29 |
[Android] Custom Binding Adapter (0) | 2022.06.28 |
Databinding.executePendingBindings() (0) | 2022.06.07 |