如何检查Observable <boolean>?

时间:2018-10-28 17:32:42

标签: kotlin rx-java2 rx-kotlin2

不幸的是,我不明白如何检查Observable。

取决于连接-我想从网络或数据库中获取数据。

我有一种检查网络连接的方法:

companion object {
        fun isConnected() : Observable<Boolean> {
            val connectivityManager = MyApplication.applicationContext().getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
            val activeNetwork = connectivityManager.activeNetworkInfo
            val isConnectedException = activeNetwork != null && activeNetwork.isConnectedOrConnecting
            return Observable.just(isConnectedException)
        }
    }

因此,如果是真的,我想调用我的网络方法:

override fun searchGroups(q: String): Observable<List<Group>> {
        return groupApi.searchGroups(GroupSearchRequest(q).toMap())
                .flatMap { groupResponse -> Observable.just(groupResponse.response.items) }
                .doOnNext{ groupList -> groupRepository.insertGroups(groupList)}
    }

在另一种情况下,我想调用数据库方法:

override fun getGroupsFromDB(q: String): Observable<List<Group>> {
        return groupRepository.findByName(q)
    }

这是我的尝试,但是我认为由于可为空的交互器而存在问题,但仍然不知道该怎么办。

compositeDisposable.add(
                NetworkManager.isConnected()
                        .flatMap {
                             if (it) {
                                interactor?.searchGroups(q)
                            } else {
                                interactor?.getGroupsFromDB(q)
                            }
                        }
    }
    )

enter image description here

有人可以帮我吗?

更新

所以问题出在可空对象interactor中。

请问有人建议不要对!!对象使用interactor的更好方法吗?

enter image description here

0 个答案:

没有答案