1.combineLatest操作符
顾名思义就是合并最近的事件,也就是说,下一个被观察者和上一个被观察者最近发射的事件合并。
使用场景:EditText 多个表单的联合判断。
在这注意 Observable 是rx包下的,不是reactivex包下的。
/**
* 监听输入框 改变按钮
*/
private void initStata() {
//skip(是为了跳过第一个事件发射,防止输入框为空的时候,也发射事件)
rx.Observable observable1 = RxTextView.textChanges(tvName);
rx.Observable observable2 = RxTextView.textChanges(tvAge);
rx.Observable observable3 = RxTextView.textChanges(tvSex);
//combineLatest使用 combineLatest操作符合并事件并发射
rx.Observable.combineLatest(observable1, observable2, observable3, new Func3<CharSequence,CharSequence,CharSequence,Boolean>() {
@Override
public Boolean call(CharSequence o, CharSequence o2, CharSequence o3) {
return (!TextUtils.isEmpty(o.toString()))&&(!TextUtils.isEmpty(o2.toString()))&&(!TextUtils.isEmpty(o3.toString()));
}
}).subscribe(new Action1<Boolean>() {
@Override
public void call(Boolean o) {
Log.e(TAG, "call: "+o );
if(o){
btnOk.setBackgroundColor(Color.parseColor("#FF0000"));
}
else{
btnOk.setBackgroundColor(Color.parseColor("#0000FF"));
}
}
});
}
网友评论