延迟搜索,RXJAVAdebounce 实现 RX SEARCH

xiaoxiao2021-02-28  16

这个就是Rxsearch,在searchview的基础上进行延伸。。。 public class RxSearch { public static Observable<String> fromSearchView(@NonNull final SearchView searchView) { final BehaviorSubject<String> subject = BehaviorSubject.create(""); searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() { @Override public boolean onQueryTextSubmit(String query) { subject.onCompleted(); return true; } @Override public boolean onQueryTextChange(String newText) { if (!newText.isEmpty()) { subject.onNext(newText); } return true; } }); return subject; } } 用法如下 mSubscription = RxSearch.fromSearchView(searchView) .debounce(500, TimeUnit.MILLISECONDS) .filter(item -> item.length() >= 1) .observeOn(AndroidSchedulers.mainThread()) .subscribe(query -> {  //此处进行搜索操作 } }); //此处进行搜索操作 } });

debounce 是延迟 500毫秒后进行请求。。Filter是过滤无效的请求,就是当输入为空的时候就不进行网络请求。。。 

 

 

 

转载请注明原文地址: https://www.6miu.com/read-2449985.html

最新回复(0)