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 |
Tags
- 자이고트
- NestedScrollView
- recyclerview
- 물리 메모리
- 절대 주소
- 디자인 패턴
- 상태관리
- http발전과정
- Dispatchers
- 프로세스
- 플로이드워셜
- Kotlin
- AAC
- viewModelScope
- 뷰홀더
- 리사이클러뷰
- 내부 단편화
- 리사이클러뷰풀
- GetX
- apk 빌드 과정
- DiffUtil
- http 역사
- appcompatacitivity
- 안드로이드
- 데코레이터 패턴
- appcompatactivity
- Android
- 운영체제
- flutter
- AsyncListDiffer
Archives
- Today
- Total
hong's android
[안드로이드] Databinding - AAC (Android Architecture Components) 본문
Databinding 라이브러리이란?
프로그래밍 방식이 아니라 선언적 형식으로 레이아웃의 UI 구성요소를 앱의 데이터 소스와 결합할 수 있는 지원 라이브러리입니다.
기존에 findViewById()를 사용하면 Null 포인트 오류의 위험이 있다.
Databinding은 UI 프레임워크 호출을 삭제할 수 있어 파일이 더욱 단순화되고 유지관리 또한 쉬워진다.
하지만 클래스 파일이 많이 생기고, 빌드 속도가 느려지는 등 단점들도 존재한다
Mvvm 디자인 패턴에서 AAC LiveData와 함께 사용해서 뷰와 뷰모델 간의 의존성을 낮출수 있다.
만악 example.xml을 작성하고 빌드하면 자동으로 관련 binding 클래스가 생긴다.
xml에 data 태그를 정의하면 아래와 같이 binding 클래스에 setter가 생기고 코드 레벨에서 해당 부분을 호출하게 된다.
ActivityMainBindingImpl.kt
public void setAct(@Nullable com.example.myapplication.MainActivity Act) {
this.mAct = Act;
synchronized(this) {
mDirtyFlags |= 0x1L;
}
notifyPropertyChanged(BR.act);
super.requestRebind();
}
MainActivity.kt
binding.act = this
android:text="@{act.text}"는 어떻게 동작할까?
Binding 클래스에 myview 멤버 변수로 해당 textView를 가지고 있다.
TextView타입의 멤버 변수는 setText( ) 메서드로 객체 값으로 전달했던 act.text으로 set 한다.
<TextView
android:id="@+id/myview"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@{act.text}"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"/>
// batch finished
if ((dirtyFlags & 0x3L) != 0) {
// api target 1
androidx.databinding.adapters.TextViewBindingAdapter.setText(this.myView, actText);
}
* 만약 커스텀 뷰와 데이터 바인딩을 사용할때 해당 뷰 객체에 setter를 만들어줘야한다.
'Android > Jetpack' 카테고리의 다른 글
[안드로이드] ViewModel - AAC (Android Architecture Components) (0) | 2023.03.21 |
---|---|
[안드로이드] Room - AAC (Android Architecture Components) (0) | 2023.03.07 |
[안드로이드] LiveData - AAC (Android Architecture Components) (0) | 2023.02.28 |