延迟搜索,RXJAVA debounce 实现 RX SEARCH

这个就是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是过滤无效的请求,就是当输入为空的时候就不进行网络请求。。。 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值