java - Observable 转换为 kotlin - 问题

标签 java android kotlin rx-java2

我已经转换了一些 JAVA分类到 Kotlin但我得到 Type Mismatch Error Android Studio 中的问题。

我正在添加我的代码 fragment 以及 IDE 中的消息屏幕截图以供引用。

JAVA代码

Disposable disposable = Observable.just(true)
.subscribeOn(Schedulers.io())
.flatMap((Function<Object, ObservableSource<?>>) o ->
    Observable.zip(mModel.getSubLocalitiesFromStores(storeType, storeVerified),
        mModel.getLocalitiesFromSubLocalities(),
        (subLocalities, localities) -> {
            mLocalities = localities;
            mSubLocalities = subLocalities;
            return true;
        }
        ))
.observeOn(AndroidSchedulers.mainThread())
.subscribe(res -> {
    setUpLocalitySpinner(spinnerLocalities);
    setUpSubLocalitySpinner(spinnerSubLocalities);
});
compositeDisposable.add(disposable);

Kotlin 代码
Observable.just(true)
.subscribeOn(Schedulers.io())
.flatMap({ o->
    Observable.zip<ArrayList<SubLocality>, ArrayList<Locality>, Boolean>(mModel!!.getSubLocalitiesFromStores(storeType, storeVerified),
        mModel!!.localitiesFromSubLocalities,
        { subLocalities, localities ->
            mLocalities = localities
            mSubLocalities = subLocalities
            true
        }
        )
} as Function<Any, ObservableSource<*>>)
.observeOn(AndroidSchedulers.mainThread())
.subscribe { res ->
    setUpLocalitySpinner(spinnerLocalities)
    setUpSubLocalitySpinner(spinnerSubLocalities)
}

问题(IDE 警告)

enter image description here

最佳答案

你只有一个可以是任何东西的 lambda 函数。有时,类型推断不能 100% 起作用,所以你必须帮助它一点

我现在没有 IDE,但我想说添加类型就足够了。就像是:

Observable.zip<...>(...,
    BiFunction { subLocalities, localities ->
        mLocalities = localities
        mSubLocalities = subLocalities
        true
    }
)

顺便说一句,请注意 RxJava 的一个很酷的东西是函数式方法。如果您不想(即您调用 subscribe() )并且所有效果都限制在 Observable 流中,则不会发生任何事情。这些作业
        mLocalities = localities
        mSubLocalities = subLocalities

正在引入副作用,将来可能难以跟踪错误

关于java - Observable 转换为 kotlin - 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59999595/

相关文章:

android - 与 RecyclerView 的数据绑定(bind)未正确呈现

Kotlin 测试 float 是否处于开区间或半开区间

kotlin - 为什么在 Kotlin 中运行这个特定的 Cucumber 步骤时会出现 ArrayIndexOutOfBoundsException?

java - JDBC:如何使用属性文件中的详细信息从 Jdbc 连接到 RAC 数据库?

java-使用提交事务插入表

java - 无法使用 RandomAcessFile 读取和打印一组字节作为字符串

java - 以编程方式撤销 Android 中的另一个应用程序权限

android - AIDE OpenGL es 2.0 三角形无法渲染

android - 覆盖父类(super class)的抽象属性导致类型错误

java - Base 64 编码包含电子邮件地址的用户名-- java