如何创建扩展函数以使rx订阅流动更清洁?

时间:2018-02-08 15:35:11

标签: android kotlin rx-java2 rx-android rx-kotlin

我正在开发一个使用room和RxAndroid的Android应用程序。问题是我正在使用下一个代码来刷新回收站视图中的信息。

observable.subscribeOn(Schedulers.io())
                .observeOn(AndroidSchedulers.mainThread())
                .subscribe{adapter.data = it}

如果我在我的活动中实现它,它就像一个魅力。但我想创建一个扩展函数,以便在使用数据库中的flowable时使代码更清晰。我创造了这个功能

fun <T> Flowable<T>.uiSubscribe(x : (T) -> Unit)  {
this.subscribeOn(Schedulers.io())
        .observeOn(AndroidSchedulers.mainThread())
        .subscribe{x}

但是当我试图使用它时,它什么也没做。它不会引发错误或任何错误。有人知道存档的方法吗?或者有人知道它为什么不起作用吗?

1 个答案:

答案 0 :(得分:2)

您应该使用subscribe { x(it) }subscribe(x)

在您的情况下,subscribe{x}会创建一个onNext个消费者,除了表达式中的x之外什么也不做。