반응형
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
- ReactiveProgramming
- 코루틴
- 책
- 알게되는
- 글또
- Coroutine
- 안드로이드
- 자바
- viewmodel
- mockito
- 병렬프로그래밍
- Gradle
- Compose
- k8s
- 코틀린
- android
- 안드로이드강좌
- 병럴프로그래밍
- theming
- 커스텀상태
- 회고
- 안드로이드스튜디오
- 알고리즘
- g 단위테스트
- Kotlin
- kotlin강좌
- Rxjava
- 스레드
- 디자인패턴
- 테스트
Archives
- Today
- Total
선생님, 개발을 잘하고 싶어요.
안드로이드 라이브 데이터 조합해서 사용하기, android livedata 조합하기, combine live data 본문
개발/android 개발
안드로이드 라이브 데이터 조합해서 사용하기, android livedata 조합하기, combine live data
알고싶은 승민 2021. 1. 31. 16:35대상
2개 이상의 라이브 데이터를 조합해서 사용하고 싶은 사람.
MediatorLiveData가 별로라고 생각하는 사람.
문제
2개 이상의 라이브 데이터를 조합하여 새로운 라이브 데이터를 만들고 싶다고 해보죠.
예를 들면, 로그인 화면에서 이메일과 비밀번호가 작성되었을 때만 로그인의 enable 설정이 되었으면
이 화면에서 2개의 live data를 쉽게 설계할 수 있겠죠.
val email: MutableLiveData<String> = MutableLiveData()
val password: MutableLiveData<String> = MutableLiveData()
해결
해결할 때 Flow를 사용해 봅시다.
val enableLogin = combine(email.asFlow(), password.asFlow()) { email, password ->
email.isNotBlank() && password.isNotBlank()
}.onStart { emit(false) }.asLiveData()
email.asFlow(): email 라이브 데이터를 Flow로 변경합니다.
combine(a: Flow, b: Flow): a Flow와 b Flow둘 중 어느 것이 emit 될 때, 최신의 a,b 페어를 emit합니다.
flow.asLiveData(): combine으로 생성한 Flow를 다시 LiveData로 변경합니다.
'개발 > android 개발' 카테고리의 다른 글
[Lifecycle] Activity Lifecycle 각 callback 마다 무슨 작업을 하는 것이 좋을까? (0) | 2021.04.04 |
---|---|
[Deploy] Android App Bundle 을 (늦었지만) 알아보자. (0) | 2021.04.04 |
Android Custom Dialog 만들기, Fullscreen Dialog 만들기, Transparent Dialog 만들기 (0) | 2021.01.28 |
[안드로이드] AlarmManager 기본 정의, 정리 (0) | 2020.12.30 |
[페이징] android Paging2 + RxJava2로 페이징 구현하기 (2) | 2020.12.07 |
Comments