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
- markdown
- coroutine flow
- Android
- OS
- android study jam
- git
- Constraint Layout
- JetPack
- 마크다운
- JUnit
- design pattern
- test
- github
- Di
- spring
- LiveData
- Data Binding
- 더티비트
- SOLID
- 리드미
- 운영체제
- 데드락
- Compose
- kotlin
- O.S
- 깃허브
- readme
- Spring Boot
- 다단계 큐
- Class.class
Archives
- Today
- Total
차지
[Android] Two - way Data Binding 본문
Data Binding
- 먼저 데이터 바인딩에 대해 간략히 이야기하자면, xml위에서 코딩하는 방식입니다.
- 선언적 형식으로 앱의 데이터 소스와 UI의 구성요소를 결합합니다.
class ViewModel {
var text = "123"
}
<variable
name="vm"
type="com.ex.viewModel"/>
<TextView
android:text="@{vm.text}"/>
- 위와 같은 두 코드가 있을 때, Activity나 Fragment에서 따로 코드를 작성하지 않아도, viewModel에 있는 text 123을 xml의 TextView에 띄울 수 있습니다.
Two-way Data binding
UI에서 데이터 소스를 조작, 데이터 소스를 UI에 반영하는 두 방식을 동시에
- xml에서 특정 함수를 실행시키거나 특정 반환값을 사용하는 것은 단방향 데이터 바인딩에서도 할 수 있습니다.
- View의 변경사항을 ViewModel에 저장하고, 동시에 View에도 보이게 하려면 어떻게 해야할까요?
- checkBox로 예시를 들자면, ViewModel은 항상 체크여부를 알아야하며 checkBox 역시 클릭될 때마다 체크박스가 반전됩니다.
<CheckBox
android:checked="@{vm.checked}"
android:onCheckChanged="@{vm.check}"/>
- 위 코드처럼 체크여부를 저장하고, 체크를 갱신해야합니다.
- 하지만 양방향 데이터 바인딩 방식을 사용한다면?
<CheckBox
android:checked="@={vm.checked}"/>
- 체크할 때마다 데이터가 업데이트되며 데이터가 다시 View에 적용되기 까지 합니다.
- 양방향 데이터 바인딩 방식은 기존 방식의
@기호 이후에=기호를 붙여주면 됩니다.
끝으로
- 양방향 데이터 바인딩은 말그대로 양쪽에서 조작할 수 있기 때문에 무한루프가 끝나지 않는 것을 조심해야 합니다.
'Android > Android' 카테고리의 다른 글
| [Kotlin] inline function (0) | 2022.02.23 |
|---|---|
| [Android] Single Live Event & Event wrapper (0) | 2022.01.25 |
| [DI] Android에서의 DI 첫걸음 (0) | 2022.01.07 |
| [Compose] Phases (0) | 2021.11.15 |
| [Compose] Side Effects (0) | 2021.11.15 |