前言
在平时的应用中,我们经常会让用户输入一些信息,最常见的莫过于注册或者登录界面中,让用户输入用户名或者密码,但是我们经常会对用户名或者密码有一定的要求,只有当它们同时满足要求时,才允许用户进行下一步的操作。
这个需求就涉及到一种模型,即在多个地方监听变化,但是在一个地方进行统一验证,如果验证成功,那么允许用户进行下一步的操作,否则提示用户输入不正确。
通过这个例子,大家将学习到 combineLatest
操作符的用法。
//Butter Knife
implementation 'com.jakewharton:butterknife:10.2.0'
annotationProcessor 'com.jakewharton:butterknife-compiler:10.2.0'
//TitleBar
implementation 'com.github.getActivity:TitleBar:8.6'
//RxJava
implementation 'io.reactivex.rxjava2:rxjava:2.2.10'
implementation 'io.reactivex.rxjava2:rxandroid:2.1.1'
2. 布局文件
3. 逻辑代码
public class MainActivity extends BaseActivity {
private static final String TAG = "MainActivity";
@BindView(R.id.et_userName)
EditText mUserName;
@BindView(R.id.et_password)
EditText mPassword;
@BindView(R.id.btn_login)
Button mLogin;
private PublishSubject mNameSubject;
private PublishSubject mPasswordSubject;
private CompositeDisposable mCompositeDisposable;
@Override
protected int getLayoutId() {
return R.layout.activity_main;
}
@Override
protected void initView() {
mNameSubject = PublishSubject.create();
mPasswordSubject = PublishSubject.create();
mUserName.addTextChangedListener(new EditTextMonitor(mNameSubject));
mPassword.addTextChangedListener(new EditTextMonitor(mPasswordSubject));
Observable observable = Observable.combineLatest(mNameSubject, mPasswordSubject, new BiFunction() {
@Override
public Boolean apply(String name, String password) throws Exception {
int nameLen = name.length();
int passwordLen = password.length();
return nameLen >= 2 && nameLen = 4 && passwordLen
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?