您好,欢迎来到二三娱乐。
搜索
您的当前位置:首页rx-android试用笔记(1)

rx-android试用笔记(1)

来源:二三娱乐

最近微博不时看到有提到rx-java,联系到之前看到的reactjs,也就抽时间学习了一下,并一直在思考此种模式的优劣。目前得出的结论是:

** 优点**

  • 天然支持并发
  • 代码更易读

缺点

  • 抽象程度太过了(纠结中,觉得也算优点)
public class LoginActivity extends Activity {
    @InjectView(R.id.username)
    EditText usernameEditText;
    @InjectView(R.id.password)
    EditText passwordEditText;
    @InjectView(R.id.signin)
    Button signinButton;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_login);

        ButterKnife.inject(this);

        Observable<Boolean> observableUsername =  WidgetObservable.text(usernameEditText).map(new Func1<OnTextChangeEvent, Boolean>() {
            @Override
            public Boolean call(OnTextChangeEvent onTextChangeEvent) {
                Boolean validateState = onTextChangeEvent.view().getText().length() > 6;
                if(!validateState) {
                    onTextChangeEvent.view().setError("length must great 6");
                }
                return validateState;
            }
        });

        Observable<Boolean> observablePassword =  WidgetObservable.text(passwordEditText).map(new Func1<OnTextChangeEvent, Boolean>() {
            @Override
            public Boolean call(OnTextChangeEvent onTextChangeEvent) {
                Boolean validateState = onTextChangeEvent.view().getText().length() > 3;
                if(!validateState) {
                    onTextChangeEvent.view().setError("length must great 3");
                }
                return validateState;
            }
        });


         observablePassword, new Func2<Boolean, Boolean, Boolean>(){
            @Override
            public Boolean call(Boolean validateStateUsername, Boolean validateStatePassword) {
                return validateStateUsername && validateStatePassword;
            }
        }).startWith(false).subscribe(new Action1<Boolean>() {
            @Override
            public void call(Boolean state) {
                signinButton.setEnabled(state);
            }
        });
    }
}

要在有lambda表达式的情况下,代码可更精简易读。

本文如未解决您的问题请添加抖音号:51dongshi(抖音搜索懂视),直接咨询即可。

热门图文

Copyright © 2019-2025 yule263.com 版权所有 湘ICP备2023023988号-1

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务