Ali*_*aXX 3 android rx-java rx-android
我正在使用它debounce()来处理用户搜索并处理它在键入时的暂停(在最后一个字符后1秒搜索):
RxSearchView.queryTextChanges(searchView)
.debounce(1, TimeUnit.SECONDS)
.subscribe(new Action1<CharSequence>() {
@Override
public void call(CharSequence charSequence) {
presenter.loadUsers(charSequence.toString());
}
});
Run Code Online (Sandbox Code Playgroud)
因此,如果用户删除所有字符,它等待1秒然后加载列表,我该如何处理它并立即加载列表?
在您的情况下,只debounce需要具有不同参数的运算符:
public final <U> Observable<T> debounce(Func1<? super T, ? extends Observable<U>> debounceSelector)
使用它可以过滤,哪些事件可以延迟或不延迟:
RxSearchView.queryTextChanges(searchView)
.debounce(new Func1<CharSequence, Observable<CharSequence>>() {
@Override
public Observable<CharSequence> call(CharSequence charSequence) {
if (charSequence.length() == 0) {
return Observable.empty();
} else {
return Observable.<CharSequence>empty().delay(1, TimeUnit.SECONDS);
}
}
})
.subscribe(new Action1<CharSequence>() {
@Override
public void call(CharSequence charSequence) {
Log.d(MainActivity.class.getSimpleName(), new Date().toGMTString() + " " + charSequence.length() + " :" + charSequence);
}
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3183 次 |
| 最近记录: |