Я новичок с RxJava
и просто пытается реализовать несколько примеров, чтобы лучше понять, что происходит, так что я, что я думал, что это EditText
, который является Observable и излучает textChangeEvent
с с использованием RxBinding
библиотека:Объединить RxTextView события изменения текста с Retrofit вызова
RxTextView.textChangeEvents(searchbar.getEditText())
.debounce(400, TimeUnit.MILLISECONDS)
.filter(new Func1<TextViewTextChangeEvent, Boolean>() {
@Override
public Boolean call(TextViewTextChangeEvent text) {
return (text.text().length() > 2);
}
})
.subscribeOn(AndroidSchedulers.mainThread())
.observeOn(Schedulers.io());
и Retrofit
апи вызов, где текст для вызова из приведенного выше Observable
.
Я объявил функцию:
@Override
public Observable<SearchResponse> executeSearch(Observable<RxTextView> queryText) {
return searchService.getSearch(queryText)
.subscribeOn(Schedulers.newThread())
.observeOn(AndroidSchedulers.mainThread());
}
И теперь я должен объединить эти два так, когда текст изменений есть новый Retrofit
вызова, но я не знаю, как я могу «пройти» queryText
в обслуживание.
Я также попытался:
Observable<TextViewTextChangeEvent>
searchBarText = RxTextView.textChangeEvents(searchbar.getEditText())
.debounce(400, TimeUnit.MILLISECONDS)
.filter(new Func1<TextViewTextChangeEvent, Boolean>() {
@Override
public Boolean call(TextViewTextChangeEvent text) {
Timber.i("Executes!!! text : %s", text.text().toString());
return (text.text().length() > 2);
}
})
.subscribeOn(AndroidSchedulers.mainThread())
.observeOn(Schedulers.io());
Observable.combineLatest(executeSearchTypeOne(searchBarText), executeSearchTypeTwo(searchBarText),
new Func2<TypeOne, TypeTwo, Object>() {
@Override
public Object call(TypeOne one, TypeTwo two) {
return null;
}
})
.subscribe(new Action1<Object>() {
@Override
public void call(Object o) {
Timber.i("WORKS!!!");
}
});
, где я хочу запустить два Retrofit
вызовов одновременно на основе EditText
изменений, но они не работают на всех