如何在订阅中返回价值

时间:2019-09-20 21:18:42

标签: android kotlin

我有以下代码

fun fetchUsersNumber(): Int {

    subscriptions.add(mRepository.getCount()
        .subscribeOn(Schedulers.io())
        .subscribe {
            count -> view?.updateNumber(count)
        })
}

在我的mRepository.getCount()中,我返回一个

override fun getCount(): Single<Int> {
    return mDao.getCount()
}

我的DAO就像:

@Query("SELECT COUNT(*) FROM users)
fun getCount(): Single<Int>

我的View只是具有Int参数的方法。

fun updateNumber(count: Int) {
    // display user number
}

我的问题是: -我想返回我的计数值。我怎样才能做到这一点?因为在我的活动中,我会有类似的东西:

textView.text = presenter.fetchUserNumber()

2 个答案:

答案 0 :(得分:1)

您的演示者将使用其生命周期方法处理订阅,并将订阅结果发送给updateNumber()。应用onError处理失败的事件,并在视图中调用另一个方法来提醒用户。

fun updateNumber(count: Int) {
    textView.text = count
}

答案 1 :(得分:1)

很简单,您无需执行任何操作,演示者将为您服务。您只需要调用您的方法并检查结果,即可获得所需的返回值。就像JakeB所说的那样,如果OnError失败,则必须应用它。

fun fetchUsersNumber(): Int {

    subscriptions.add(mRepository.getCount()
        .subscribeOn(Schedulers.io())
        .subscribe (
            { count -> view?.updateNumber(count) },
            { // your Error here }
        )
    )
}