如何发出订阅结果

How to emit the result of a subscription

我有以下情况:

这是我activity中相关的代码:

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 对象是 class 答案,而不是 Maybe<Answer>.

非常感谢您的帮助!

如果有人遇到这个问题,解决方案是将 Maybe 解析为 Observable,因为 Observable 实现了 ObservableSource,所以我的代码现在是这样的:

upsert_status_questions_confirm.clicks()
            .map {
                val list = mutableListOf<Answer>()
                list.add(Answer("Some placeholder"))
                list.add(Answer("Another placeholder"))
                list
            }.flatMap {
                upsertStatusQuestionsViewModel.insertMultipleAnswers(*it.toTypedArray())
            }.subscribe({
                // Success...
            }, {
                // Error...
            })

在 ViewModel 中:

fun insertMultipleAnswers(vararg answers: Answer) = database.answerDao()
                                               .createMultiple(answers.toList())
                                               .toObservable()
                                               .subscribeOn(Schedulers.io())
                                               .observeOn(AndroidSchedulers.mainThread())