android - 带有 RxBinding 的 Observable.zip 不返回结果
问题描述
我有两个 EditText,我用两个 observables 听它:
Observable<CharSequence> emailObservable = RxTextView.textChanges(emailNew);
Observable<CharSequence> passwordObservable = RxTextView.textChanges(passwordNew);
当两个值都有效时,我想从该字段中压缩值以执行一些操作。
所以我写道:
Observable.zip(emailObservable, passwordObservable,
(charSequence, charSequence2) -> "test")
.subscribe(result -> Timber.e("Result:" + result));
但它仅在第二个字段数据更改时返回结果。当我在第一个字段中输入内容时,它不起作用。
如果我写相同的结果:
emailObservable
.zipWith(passwordObservable, (email, password) -> email + " " + password)
.subscribe(result -> Timber.e(result);});
它从第一个字段返回正确的值,但如果我在它上面输入什么也不返回。
答案一定很简单,但现在我不明白我做错了什么。
解决方案
好的,我替换zip
为combineLatest
它并以某种方式工作:
Observable.combineLatest(emailObservable, passwordObservable,
(charSequence, charSequence2) -> new String[]{charSequence.toString(), charSequence2.toString()})
.subscribe(result -> {
boolean isEmailValid = isValidEmail(result[0]);
boolean isPasswordValid = isValidPassword(result[1]);
});
推荐阅读
- python-3.x - 如何从 Scrapy Python 输出中删除 HTML 标签和“\n”
- html - 从博客中的每个 WordPress 博客文章中删除 rel="noopener noreferrer"
- powershell - 使用 Powershell 计划打开和关闭 Putty 终端
- java - 如何选择最佳线程数
- mysql - 如何使用 pymysql 修复“在查询期间丢失与 MySQL 服务器的连接”
- scheduling - 如何定义具有索引的决策变量取决于同一决策变量的其他索引?
- php - php 网站可以连接到在不同服务器上运行的现有 Parse 服务器吗?
- nativescript - SearchBar 组件borderRadius 不起作用
- python - 如何使用python和beautifulsoup4对网站中的多个页面进行网页抓取?
- php - pdo SET 变量上的 SQLSTATE[HY000]