т.ч. пары) в запрос в Room, который так же возвращает Observable?
Во вьюМодели:
val searchQuery = Observable<String>
val catNumberOnlyTurnedoff = Observable<Pair<Int, Boolean>>
fun getWords(query: String, category: Int, onlyOff: Boolean) :
LiveData<List<Word>> = LiveDataReactiveStreams.fromPublisher(wordDao.getWordsRx(query, category, onlyOff)
.toFlowable(BackpressureStrategy.LATEST))
Запрос в dao выглядит так:
fun getWordsRx( query: String, category: Int, onlyOff: Boolean ): Observable<List<Word>> = blablabla
Как лаконичнее сделать чтобы при перемене какого-то из значений в Observabl-ах аргументов они автоматически подставлялись в запрос с соответствующими изменениями в передаваемом в Ливдату списке?
а почему не корутины...
Я бы рад, но На работе надо rxjava
А на корутинах все работает?) Не совсем понял задачу и преобразования в коде с паблишерами потом то флов итд (зачем это все я может не догнал просто). Почему метод getWords не может вернуть фловабле список, а во вью модели производить подписку нужную вам и постить данные в лайв дату в субскрайбе?
Ну тип такого где handleResult метод будет делать типа _wordsLiveData.postValue(ViewState.success(words)) принимая лист вордс параметром. ну или как-то в таком виде. Ну как пример тип -> wordsUseCase(или сразу там дао или что там у вас).getWordsRx(параметры ваши) .observeOn(ui) .subscribe(::handleFailure, ::handleResult) .addToDisposable() и в случае изменений параметров "наблюдения" производить переподписку с новыми параметрами и отписывать через диспоуз старую. Если я правильно понял о том что хочется.
Rx для мазохистов. Нужно выпиливать из всех проектов.
Прям переподписку? В корутинах просто можно наблюдая потоки с параметрами прямо в потоке их подставлять в запрос с помощью flatmaplatest (в вложении пример). Я просто думал что в rxJava можно тоже как-то без переподписок 🤷♂️ Нельзя получается?
именно. в этом сообщении не сказано что ты не понимаешь рх
Обсуждают сегодня