延迟搜索,RXJAVA debounce 实现 RX SEARCH

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_16624353/article/details/79146093
这个就是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是过滤无效的请求,就是当输入为空的时候就不进行网络请求。。。 

 

猜你喜欢

转载自blog.csdn.net/qq_16624353/article/details/79146093