美文网首页
RxBinding的学习

RxBinding的学习

作者: 简单Liml | 来源:发表于2017-08-21 16:05 被阅读41次

参考链接:
http://www.jianshu.com/p/ded241051b61
http://www.jianshu.com/p/055002aaf1ca
http://www.jianshu.com/p/34cf96b72102

Android上我们很多时候通过匿名类的方式处理控件的响应事件,这样看起来有点繁琐。RxBinding采用响应式编程的方式来解决这个问题。

首先,添加依赖:

compile 'com.jakewharton.rxbinding2:rxbinding:2.0.0'

我们先来看下以前处理按钮的方式是:

btnBind.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                tvShow.setText("success");
            }
        });

现在通过RxBinding来处理:

disBtnBind = RxView.clicks(btnBind).subscribe(new Consumer<Object>() {
            @Override
            public void accept(Object o) throws Exception {
                tvShow.setText("success");
            }
        });

这是我们最普遍处理按钮点击事件的方式,是不是很简洁。

再来看下我们处理编辑框文本变换的事件:

disEtChange = RxTextView.textChanges(etChange)
                .map(new Function<CharSequence, String>() {
                    @Override
                    public String apply(CharSequence s) throws Exception {
                        return new StringBuilder(s).reverse().toString();
                    }
                })
                .subscribe(new Consumer<String>() {
                    @Override
                    public void accept(String s) throws Exception {
                        tvShow.setText("success: "+s);
                    }
                });

在操作过程中,我们还可以加入map等方法,对参数进行处理,这个在rxJava中我们以学习。

最后,不要忘记关闭,防止内存泄漏。

@Override
    protected void onDestroy() {
        super.onDestroy();
        disBtnBind.dispose();
        disEtChange.dispose();
    }

还有很多控件事件都可实现,可以去查看下。

相关文章

网友评论

      本文标题:RxBinding的学习

      本文链接:https://www.haomeiwen.com/subject/bpzcdxtx.html