Преобразование LiveData в Observable для использования RxJava

Используя LiveDataReactiveStreams, можно преобразовать LiveData в Publisher. Но чтобы использовать метод RxJava2, такой как withLatestFrom, мне нужно иметь Observable вместо Publisher. Есть ли другой способ конвертировать Publisher в Observable помимо использования этой (устаревшей) библиотеки — RxJava‹->ReactiveStreams ?


person dawzaw    schedule 23.04.2018    source источник
comment
RxJava 2 Flowable является Publisher и может работать с Publishers. Скорее всего, вам не нужно конвертировать в Observable.   -  person akarnokd    schedule 23.04.2018


Ответы (1)


Так что мне удалось сделать что-то вроде этого. Но я не знаю, куда поместить этот код в структуру проекта Android, так как toPublisher требует экземпляр Activity.

val rxDataPublisher: Publisher<DataSnapshot> = LiveDataReactiveStreams.toPublisher(this@LocationActivity,fireBaseLiveData)

val rxLocationPublisher: Publisher<Location> = LiveDataReactiveStreams.toPublisher(this@LocationActivity, locationLiveData)

val rxFlowable: Flowable<Pair<Location, DataSnapshot>> = Flowable.fromPublisher(rxDataPublisher)
                .withLatestFrom(rxLocationPublisher, BiFunction{t1, t2 -> Pair(t2,t1) })

val flowableToLiveData = LiveDataReactiveStreams.fromPublisher(rxFlowable)
person dawzaw    schedule 23.04.2018