Как выдать результат подписки - PullRequest
1 голос
/ 30 мая 2020

У меня следующая ситуация:

  • Я использую расширения Rx Kotlin для обнаружения щелчков на кнопках моей активности
  • Я использую Room для вставки записей в база данных

Это код, связанный с моей деятельностью:

button.clicks()
            .flatMap {
                val list = mutableListOf<Answer>()
                val date = Date()
                list.add(Answer("some placeholder info")) 
                list.add(Answer("Another placeholder info")) 
                Observable.fromArray(list)
            }
            .map {
                upsertStatusQuestionsViewModel.insertMultipleAnswers(it)
            }.subscribe {
                // it here is an object Maybe<Answer>
            }

А это код ViewModel:

fun insertMultipleAnswers(answers: List<Answer>) = database.answerDao()
                                                      .createMultiple(answers.toList())
                                                      .subscribeOn(Schedulers.io())
                                                      .observeOn(AndroidSchedulers.mainThread())

Я бы хотел чтобы показать некоторую информацию об ответе, вставленном в базу данных, по этой причине мне нужно получить объект Answer в моей подписке. Однако я не знаю, какой оператор можно использовать для достижения того, чтобы объект it в подписке имел класс Answer, а не Maybe<Answer>.

Большое спасибо за вашу помощь!

1 Ответ

0 голосов
/ 01 июня 2020
• 1000 *
fun insertMultipleAnswers(vararg answers: Answer) = database.answerDao()
                                               .createMultiple(answers.toList())
                                               .toObservable()
                                               .subscribeOn(Schedulers.io())
                                               .observeOn(AndroidSchedulers.mainThread())
...