【发布时间】:2018-06-02 23:05:58
【问题描述】:
rxjava:2.1.14
rxandroid:2.0.2
Android Studio 3.2 Canary
我有以下方法可以检索已排序行的游标。
但是,这个方法需要返回游标。然而,没有办法 我可以在 onSuccess 方法返回 void 时返回光标。
只是想知道如何从 onSuccess 获取光标并从方法中返回它?
public Cursor queryAllInsects(String sortOrder) {
insectStorageInteractorImp.getAllSortedInsects(sortOrder)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new SingleObserver<Cursor>() {
@Override
public void onSubscribe(Disposable d) {
}
@Override
public void onSuccess(Cursor cursor) {
return cursor; /* anyway I can return the cursor in this method */
}
@Override
public void onError(Throwable e) {
}
});
}
InsectStorageInteractorImp.kt
override fun getAllSortedInsects(sortOrder: String): Single<Cursor> {
return Single.fromCallable {
insectStorageImp.queryAndSort(sortOrder)
}
}
非常感谢您的任何建议,
【问题讨论】:
-
您可以拨打
Single.blockingGet。但我强烈反对这样做,它首先破坏了拥有 Rx 的全部意义。 -
请参阅this answer(以及问题,就此而言)以更详细地解释为什么您尝试做的事情是一个坏主意。
-
为什么需要返回游标?你会用它做什么?你最好返回一个 Singlr
并在 onSuccess 回调中使用该光标做你需要做的一切。