RxBinding 是 Jake Wharton 的一個開源庫,它提供了一套在 Android 平臺上的基於 RxJava 的 Binding API。所謂 Binding,就是類似設置 OnClickListener 、設置 TextWatcher 這樣的註冊綁定對象的 API。
首先需要引入lib
android Studio
compile 'com.jakewharton.rxbinding:rxbinding:0.4.0'
通過幾個例子說明使用
CheckBox chekcbox = (CheckBox) findViewById(R.id.chekcbox);
//觀察選擇的變化
RxCompoundButton.checkedChanges(chekcbox)
.subscribe(new Action1<Boolean>() {
@Override
public void call(Boolean aBoolean) {
textview.setText(aBoolean.toString());
}
});
RxJava 中 SharedPreferences的使用
//注:需要RxSharedPreferences庫支持:
compile ‘com.f2prateek.rx.preferences:rx-preferences:1.0.1’
//同步SharedPreferences
SharedPreferences msharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);
RxSharedPreferences rxSharedPreferences = RxSharedPreferences.create(msharedPreferences);
Preference<Boolean> xxFunction = rxSharedPreferences.getBoolean("checkbox_start", false);
CheckBox chekcbox2 = (CheckBox) findViewById(R.id.chekcbox2);
chekcbox2.setChecked(xxFunction.get());//設置保存的狀態
RxCompoundButton.checkedChanges(chekcbox2)
.subscribe(xxFunction.asAction());//保存狀態
//觀察點擊事件
Button button = (Button) findViewById(R.id.button);
RxView.clicks(button)
.subscribe(new Action1<Void>() {
@Override
public void call(Void aVoid) {
Toast.makeText(UpdateViewActivity.this, "點擊", Toast.LENGTH_SHORT).show();
}
});
防止重複點擊
//解決連續點擊問題
Button button2 = (Button)findViewById(R.id.button2);
RxView.clicks(button2)
.throttleFirst(3, TimeUnit.SECONDS)//在一段時間內只取一個事件 第二個參數是單位
.subscribe(new Action1<Void>() {
@Override
public void call(Void aVoid) {
Toast.makeText(UpdateViewActivity.this, "防止連續點擊", Toast.LENGTH_SHORT).show();
}
});
//觀察EditText改變事件
tv_ed = (TextView) findViewById(R.id.tv_ed);
EditText edittext = (EditText) findViewById(R.id.edittext);
RxTextView.textChanges(edittext)
.subscribe(new Action1<CharSequence>() {
@Override
public void call(CharSequence charSequence) {
tv_ed.setText(charSequence);
}
});