Android 对多个EditText监听
日期: 2019-03-18 分类: 个人收藏 384次阅读
@ Android 对多个EditText监听
RxJava的掌握
https://github.com/ReactiveX/RxJava/wiki/How-To-Use-RxJava
上面是官网连接,RXJava一直在升级,今天讲解以我项目中用的版本为准。
gradle版本
api ‘io.reactivex:rxjava:1.3.0’
项目代码
telEt = contentView.findViewById(R.id.tel_et);
Observable<String> telObservable = Observable.unsafeCreate(subscriber -> telEt.addTextChangedListener(new MyTextWatcher() {
@Override
public void afterTextChanged(Editable s) {
super.afterTextChanged(s);
subscriber.onNext(s.toString());
}
}));
imageCodeEt = contentView.findViewById(R.id.image_code_et);
Observable<String> imageObservable = Observable.unsafeCreate(subscriber -> imageCodeEt.addTextChangedListener(new MyTextWatcher() {
@Override
public void afterTextChanged(Editable s) {
super.afterTextChanged(s);
subscriber.onNext(s.toString());
}
}));
imageCodeIv = contentView.findViewById(R.id.image_code_iv);
imageCodeIv.setOnClickListener(this);
vCodeEt = contentView.findViewById(R.id.v_code_et);
Observable<String> vCodeObservable = Observable.unsafeCreate(subscriber -> vCodeEt.addTextChangedListener(new MyTextWatcher() {
@Override
public void afterTextChanged(Editable s) {
super.afterTextChanged(s);
subscriber.onNext(s.toString());
}
}));
Observable.combineLatest(telObservable, imageObservable, vCodeObservable, (s, s2, s3) -> !StringUtils.isEmpty(s) && !StringUtils.isEmpty(s2) && !StringUtils.isEmpty(s3)).subscribe(new Observer<Boolean>() {
@Override
public void onCompleted() {
}
@Override
public void onError(Throwable e) {
}
@Override
public void onNext(Boolean aBoolean) {
if (aBoolean) {
loginBtn.setClickable(true);
loginBtn.setText(activity.getString(R.string.login_btn));
loginBtn.setBackground(activity.getResources().getDrawable(R.drawable.common_green_bg));
} else {
loginBtn.setClickable(false);
loginBtn.setBackground(activity.getResources().getDrawable(R.drawable.common_grey_bg));
}
}
});
主要方法是使用Observable.combineLatest(),将多个Observable合并起来。
除特别声明,本站所有文章均为原创,如需转载请以超级链接形式注明出处:SmartCat's Blog
下一篇: pygame安装(超级详细)
精华推荐