RxJava实例-用debounce实现的简单即时搜索
来源:互联网 发布:html编程 编辑:程序博客网 时间:2024/06/13 18:39
效果图
说明
运用debounce操作符进行文本搜索,输入单个字符并不会触发搜索,而是在等待一定时间后才触发搜索。
debounce
上面这个图并不是很直观,换一个图
debounce的意思是“去除抖动”,debounce操作符对源Observable每产生一个结果后,如果在规定的间隔时间内没有别的结果产生,则把这个结果提交给订阅者处理,否则忽略该结果。
主要代码
subscription = Observable .create(new Observable.OnSubscribe<String>() { @Override public void call(final Subscriber<? super String> subscriber) { mEtSearch.addTextChangedListener(new TextWatcher() { @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { } @Override public void onTextChanged(CharSequence s, int start, int before, int count) { subscriber.onNext(s.toString()); } @Override public void afterTextChanged(Editable s) { } }); } }) .debounce(500, TimeUnit.MILLISECONDS) .filter(new Func1<String, Boolean>() { @Override public Boolean call(String s) { if (!TextUtils.isEmpty(s)) return true; return false; } }) .observeOn(AndroidSchedulers.mainThread()) .subscribe(new Subscriber<String>() { @Override public void onCompleted() { log("subscriber -> onCompleted"); } @Override public void onError(Throwable e) { log("subscriber -> onError ->" + e.getMessage()); } @Override public void onNext(String s) { log(s); } });
监听EditView里的文字改变,然后用debounce规定时间间隔为500ms,相隔500ms以上的改变才允许通过输出log。
源代码
Demo地址:https://github.com/jiangkang/KTools.git
阅读全文
0 0
- RxJava实例-用debounce实现的简单即时搜索
- 简单实现搜索框 即时搜索
- 搜索框即时搜索的实现
- RxJava 使用debounce操作符 优化app搜索功能
- RxJava 使用debounce操作符 优化app搜索功能
- RxJava 使用debounce操作符 优化app搜索功能
- 即时通信的简单实现
- underscore 的 debounce 的实现
- vue 实现简单的关键词搜索实例
- Simple RxJava 简单的RxJava实现
- Rxjava(过滤类)-Debounce
- 用最简单的例子实现jQuery图片即时上传
- 用最简单的例子实现jQuery图片即时上传
- 用最简单的例子实现jQuery图片即时上传
- Android 实现简单的即时通信
- Java Socket实现简单的即时通信
- RxJava(七) 使用debounce操作符 优化app搜索功能
- 即时搜索的方案
- Handler简单分析-runOnUiThread,view.post()
- Android分享---调用系统自带的分享功能
- RxJava实例-按钮点击数累加
- django1.11.1 models 数据库同步
- Myeclipse上svn回到上一个版本
- RxJava实例-用debounce实现的简单即时搜索
- ARM中的RO、RW和ZI DATA说明
- 输入某二叉树的前序遍历和中序遍历的结果,请重建该二叉树。
- Storm内部的消息传递机制
- JSON解析框架汇总
- BGP的14条选路原则介绍
- JavaSE-day08笔记
- /*****/栈和队列常见面试题
- IntelliJ IDEA直接上传文件到服务器