g.r*_*ion 8 java android reactive-programming rx-java rx-android
我有3个EditText字段,我为这些字段创建了3个observable.
Observable<CharSequence> o1 = RxTextView.textChanges(field1);
Observable<CharSequence> o2 = RxTextView.textChanges(field2);
Observable<CharSequence> o3 = RxTextView.textChanges(field3);
Run Code Online (Sandbox Code Playgroud)
当所有这三个字段都有一些值时,我想启用一个按钮.用户可以在字段中以任何顺序输入值.我怎样才能做到这一点?
我使用zip来实现这一目标.
Observable<CharSequence> o1 = RxTextView.textChanges(field1);
Observable<CharSequence> o2 = RxTextView.textChanges(field2);
Observable<CharSequence> o3 = RxTextView.textChanges(field3);
Observable.zip(o1, o2, o3, (c1, c2, c3) -> c1.length() > 0 && c2.length() > 0 && c3.length() > 0).subscribe(myButton::setEnabled)
Run Code Online (Sandbox Code Playgroud)
当我在所有三个文本字段中输入内容时,上述情况有效.例如,我在所有三个文本字段中输入了1个字符,然后按钮将被启用.但是当我删除三个字段中的任何一个字符时.zip不会被调用,因为它会在订阅者调用onNext之前等待其他两个文本字段流式传输某些数据.所以当我删除任何文本字段中的任何字符时,我希望我的按钮再次被禁用.我怎样才能做到这一点?
| 归档时间: |
|
| 查看次数: |
5402 次 |
| 最近记录: |