您当前的位置: 首页 >  Java

Kevin-Dev

暂无认证

  • 0浏览

    0关注

    544博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

【Android -- RxJava】RxJava2.0 实践(六),采用 combineLatest 操作符实现输入表单验证

Kevin-Dev 发布时间:2019-03-18 19:53:48 ,浏览量:0

前言

在平时的应用中,我们经常会让用户输入一些信息,最常见的莫过于注册或者登录界面中,让用户输入用户名或者密码,但是我们经常会对用户名或者密码有一定的要求,只有当它们同时满足要求时,才允许用户进行下一步的操作。

这个需求就涉及到一种模型,即在多个地方监听变化,但是在一个地方进行统一验证,如果验证成功,那么允许用户进行下一步的操作,否则提示用户输入不正确。

通过这个例子,大家将学习到 combineLatest 操作符的用法。

效果图

在这里插入图片描述

具体实现 1. 添加依赖
	//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             
关注
打赏
1658837700
查看更多评论
0.0421s