参考链接:
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();
}
还有很多控件事件都可实现,可以去查看下。