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
													
											
												
												- 막내의 막무가내
 - 2022년 6월 일상
 - 안드로이드 sunflower
 - 막내의막무가내 알고리즘
 - Fragment
 - 주엽역 생활맥주
 - 막내의막무가내 안드로이드
 - 막내의막무가내 플러터
 - 부스트코스에이스
 - 막내의막무가내 플러터 flutter
 - 막내의막무가내 회고 및 목표
 - 막내의 막무가내 알고리즘
 - 막내의막무가내 rxjava
 - 막내의막무가내 SQL
 - 프로그래머스 알고리즘
 - 막내의막무가내 코볼 COBOL
 - 막내의막무가내 목표 및 회고
 - 막무가내
 - 막내의막무가내 일상
 - 막내의막무가내
 - 안드로이드 Sunflower 스터디
 - 안드로이드
 - 막내의막무가내 안드로이드 코틀린
 - 막내의막무가내 코틀린 안드로이드
 - 막내의막무가내 코틀린
 - 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