【发布时间】:2016-07-15 05:05:16
【问题描述】:
我想实现一个 Rx Search 视图,该视图将使用字符串过滤回收器视图,并检查本地 Realm 数据库并提出改造请求,然后将所有结果组合起来而不重复??所以,换句话说:我想在搜索视图中的文本更改事件,使用输入字符串发出网络请求、数据库查询并与不重复的结果组合
这是我的初始代码:
RxSearchView.queryTextChanges(searchView)
.filter(charSequence -> !TextUtils.isEmpty(charSequence))
.throttleLast(100, TimeUnit.MILLISECONDS)
.debounce(200, TimeUnit.MILLISECONDS)
.onBackpressureLatest()
.flatMap(charSequence -> userListPresenter.search(charSequence))
.observeOn(AndroidSchedulers.mainThread())
.subscribeOn(Schedulers.io())
.onErrorResumeNext(Observable.empty())
.subscribe((Action1) response -> userListPresenter.showSearchResult((List<UserModel>) response));
userListPresenter.search(charSequence)) 应该返回一个没有重复的串联响应的 observable,谢谢 :)
userListPresenter.search(charSequence)):
Observable.create(subscriber -> {
if (Utils.isNetworkAvailable(getContext())) {
if (!subscriber.isUnsubscribed()) {
subscriber.onNext(restApi.search(query));
subscriber.onCompleted();
}
}).mergeWith(
Observable.create(subscriber -> {
if (!subscriber.isUnsubscribed()) {
subscriber.onNext(realmManager.getWhere(query));
subscriber.onCompleted();
}
})).collect(HashSet::new, HashSet::add)
.flatMap(Observable::from);
【问题讨论】: