什么是rxBinding
rxBinding是一個開源庫,讓你可以以raJava的形式來處理ui事件。
1. rxBinding的點擊事件
舉個栗子,rxBinding可以監聽view的點擊事件
//點擊事件的綁定
RxView.clicks(tvClick)
.throttleFirst(1000, TimeUnit.SECONDS) //兩秒鐘之內只取一個點擊事件,防抖操作
.subscribe(new Action1<Void>() {
@Override
public void call(Void aVoid) {
Toast.makeText(MainActivity.this,"點擊了",Toast.LENGTH_SHORT).show();
}
});
//lamb表達式書寫
RxView.clicks(tvClick)
.throttleFirst(1000, TimeUnit.SECONDS) //兩秒鐘之內只取一個點擊事件,防抖操作
.subscribe(aVoid -> {
Toast.makeText(MainActivity.this,"點擊了",Toast.LENGTH_SHORT).show();
});
注意:Edittext使用RxTextView,其他的view使用RxView
例子:監聽按鈕的長按
//button的長按的監聽
RxView.longClicks(btnLongClick).subscribe(aVoid -> {
Toast.makeText(MainActivity.this, "長按了", Toast.LENGTH_SHORT).show();
});
例子:監聽checkBox的選中情況
//CheckBox的監聽
RxCompoundButton.checkedChanges(ckChoose).subscribe(aBoolean -> {
tvCkViewShow.setText(aBoolean?"選中了":"沒有被選中");
});
例子:edittext的監聽
//edittext內容的監聽
RxTextView.textChangeEvents(tvEdittext)
.debounce(600, TimeUnit.MILLISECONDS)//debounce是在600毫秒內沒有操作就發生事件
.subscribe(new Action1<TextViewTextChangeEvent>() {
@Override
public void call(TextViewTextChangeEvent textViewTextChangeEvent) {
tvEditViewShow.setText(textViewTextChangeEvent.text());
}
});
RxTextView.textChangeEvents(tvEdittext)
.debounce(600, TimeUnit.MILLISECONDS)//debounce是在600毫秒內沒有操作就發生事件
.subscribe(textViewTextChangeEvent -> {
tvEditViewShow.setText(textViewTextChangeEvent.text());
});