250x250
Notice
Recent Posts
Recent Comments
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- 안드로이드 Sunflower 스터디
- 막내의막무가내 프로그래밍
- Fragment
- 막내의막무가내 코틀린 안드로이드
- 막내의막무가내 안드로이드
- 주엽역 생활맥주
- 주택가 잠실새내
- 막내의막무가내 SQL
- 막내의막무가내 코볼 COBOL
- 부스트코스에이스
- 막내의막무가내 알고리즘
- 막내의막무가내 일상
- 막내의막무가내 코틀린
- 막내의막무가내 안드로이드 에러 해결
- 막무가내
- 안드로이드
- 막내의막무가내 안드로이드 코틀린
- 막내의 막무가내
- 막내의막무가내 rxjava
- 2022년 6월 일상
- 막내의막무가내
- 프래그먼트
- 막내의막무가내 플러터
- 부스트코스
- 막내의막무가내 목표 및 회고
- 안드로이드 sunflower
- 막내의 막무가내 알고리즘
- 막내의막무가내 플러터 flutter
- 프로그래머스 알고리즘
- flutter network call
Archives
- Today
- Total
막내의 막무가내 프로그래밍 & 일상
[RxJava] Convert Observable to Single (Single.fromObservable) + flatMapCompletable 본문
안드로이드/RxJava
[RxJava] Convert Observable to Single (Single.fromObservable) + flatMapCompletable
막무가내막내 2020. 5. 21. 21:27728x90
class BachelorNoticeRemoteDataSourceImpl : BachelorNoticeRemoteDataSource {
override fun requestNotice(): Single<List<BachelorNotice>> {
return Single.fromObservable(
Observable.create {
val bachNoticeList: ArrayList<BachelorNotice> = ArrayList()
val doc: Document =
Jsoup.connect("https://computer.cnu.ac.kr/computer/notice/bachelor.do")
.get() // Base Url
val contentElements: Elements =
doc.select("div[class=b-title-box]").select("a") // title, link
val idElements: Elements = doc.select("td[class=b-num-box]") // id값
for ((i, elem) in contentElements.withIndex()) {
bachNoticeList.add(
BachelorNotice(
idElements[i].text(),
elem.text(),
elem.attr("href")
)
)
}
it.onNext(bachNoticeList)
it.onComplete()
}
)
}
override fun requestNotice(offset: Int): Single<List<BachelorNotice>> {
TODO("Not yet implemented")
}
}
Observable 을 create 하고 Jsoup 통신을 한 뒤 Single로 변환하여 반환해주었습니다.
RxJava를 공부하고 입는 입장에서 기록용으로 남깁니다.
[Single -> Completable 로 전환 이어나가기]
interface ProfileRepository {
fun uploadProfileImage(imageUri: Uri?): Single<String>
fun updateProfileInfo(user: User, imageUrl : String): Completable
}
repository.uploadProfileImage(imageUri = imageUri)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.flatMapCompletable { imageUrl ->
repository.updateProfileInfo(user = user, imageUrl = imageUrl)
}
.doOnSubscribe { showLottieProgress() }
.doAfterTerminate { hideLottieProgress() }
.subscribeBy(
onComplete = {
_editProfileSuccess.value = true
},
onError = {
_editProfileSuccess.value = false
}
)
728x90
'안드로이드 > RxJava' 카테고리의 다른 글
[RxJava] Subject 클래스 간략 정리 (feat. Hot, Cold Observable차이) (4) | 2020.10.03 |
---|---|
[RxJava] RxJava 프로그래밍 책 후기 (6) | 2020.09.03 |
[RxJava] MVVM - Model Layer 네트워크 통신에 적용 (4) | 2020.05.12 |
[RxJava] 기초 개념 정리 사이트 (0) | 2020.05.08 |
[RxJava] Observable 클래스 (0) | 2020.04.01 |
Comments