Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
Tags
- test
- LiveData
- 더티비트
- Compose
- coroutine flow
- spring
- SOLID
- Constraint Layout
- Android
- Di
- github
- 깃허브
- android study jam
- Spring Boot
- JUnit
- design pattern
- O.S
- Data Binding
- markdown
- OS
- 다단계 큐
- 리드미
- JetPack
- Class.class
- kotlin
- readme
- 데드락
- git
- 마크다운
- 운영체제
Archives
- Today
- Total
차지
[Android] Data binding 본문
데이터 바인딩
- 이전에 포스팅했던 View binding과 같이 뷰 속성을 참조하는 방식 중 하나입니다.
- View binding보다 성능은 떨어질 수 있습니다.
사용 전
- build.gradle에서 android 블록에
dataBindinbg { enabled = true }를 추가해야 합니다. - plugin 블록에 `id 'kotlin-kapt' 를 추가해야 합니다.
- 컴파일될 때 바인딩 클래스가 자동으로 구현됩니다.
- layout.xml에선 최상위에 layout 블록이 놓여집니다.
- 그리고 data 블록 안에 바인딩할 데이터를 작성합니다.
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools">
<data>
<variable
name="text"
type="com.afsdf.asdf.TextSample"/>
</data>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/textView_sample"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@{text}"/>
</LinearLayout>
</layout>
사용
- Activity, Fragment에서 binding 변수를 만듭니다.
- view에 해당하는 xml파일을 매칭시켜 주면서 binding 변수에 할당합니다.
DataBindingUtil.setContentView(this, R.layout.activity_main) - View Binding을 사용할 때와 마찬가지로 Activity, Fragment 파일에서 binding.textViewSample을 참조할 수 있습니다.
MV?에서의 적용
- MVC 패턴에서 데이터 바인딩을 적용하게 되면, 화면은 Model을 참조하게 되고 의존하게 됩니다.
- MVVM 패턴의 ViewModel을 따로 만들어 레이아웃과 위젯을 ViewModel이 바인딩하게 합니다.
'Android > Android' 카테고리의 다른 글
| [Compose] Side Effects (0) | 2021.11.15 |
|---|---|
| [Compose] Compose로 Migration하기 (0) | 2021.11.15 |
| [Android] MVVM 패턴 (0) | 2021.10.10 |
| [Android] 예외처리: runCatching (0) | 2021.10.03 |
| [Android] View Binding (0) | 2021.10.03 |