关于版本问题
如果是 java 代码想使用,那么选择 https://github.com/JakeWharton/RxBinding/tree/2.2.0
最新的 3.3.0 是 kotlin 实现的。
rxjava 引用
1
2
3
4
5
6
|
packagingOptions {
//Use “exclude” to point at the specific file (or files) that Android Studio is complaining about//
exclude 'META-INF/rxjava.properties'
}
implementation "io.reactivex.rxjava2:rxjava:2.2.12"
implementation 'io.reactivex.rxjava2:rxandroid:2.1.1'
|
java引用
Platform bindings:
1
|
implementation 'com.jakewharton.rxbinding2:rxbinding:2.2.0'
|
Android library bindings:
1
2
3
4
5
|
implementation 'com.jakewharton.rxbinding2:rxbinding-support-v4:2.2.0'
implementation 'com.jakewharton.rxbinding2:rxbinding-appcompat-v7:2.2.0'
implementation 'com.jakewharton.rxbinding2:rxbinding-design:2.2.0'
implementation 'com.jakewharton.rxbinding2:rxbinding-recyclerview-v7:2.2.0'
implementation 'com.jakewharton.rxbinding2:rxbinding-leanback-v17:2.2.0'
|
kotlin引用
Platform bindings:
1
|
implementation 'com.jakewharton.rxbinding3:rxbinding:3.0.0'
|
AndroidX library bindings:
1
2
3
4
5
6
7
8
|
implementation 'com.jakewharton.rxbinding3:rxbinding-core:3.0.0'
implementation 'com.jakewharton.rxbinding3:rxbinding-appcompat:3.0.0'
implementation 'com.jakewharton.rxbinding3:rxbinding-drawerlayout:3.0.0'
implementation 'com.jakewharton.rxbinding3:rxbinding-leanback:3.0.0'
implementation 'com.jakewharton.rxbinding3:rxbinding-recyclerview:3.0.0'
implementation 'com.jakewharton.rxbinding3:rxbinding-slidingpanelayout:3.0.0'
implementation 'com.jakewharton.rxbinding3:rxbinding-swiperefreshlayout:3.0.0'
implementation 'com.jakewharton.rxbinding3:rxbinding-viewpager:3.0.0'
|
Google ‘material’ library bindings:
1
|
implementation 'com.jakewharton.rxbinding3:rxbinding-material:3.0.0'
|
使用
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
//复合中断器
private final CompositeDisposable mDisposable = new CompositeDisposable();
@Override
protected void onCreate(Bundle savedInstanceState) {
...code
//把view 的加入到 复合中断器 中
Button mButton = findViewById(R.id.mButton);
mDisposable.add(RxView.clicks(mButton).debounce(500, TimeUnit.MILLISECONDS).subscribe(o -> Log.d("", "")));
}
@Override
protected void onDestroy() {
super.onDestroy();
mDisposable.clear();
}
|
使用场景
Button 防抖处理
1
2
3
|
mDisposable.add(RxView.clicks(mButton)
.throttleFirst(2, TimeUnit.SECONDS) //两秒钟之内只取一个0点击事件,防抖操作
.subscribe(o -> Toast.makeText(RxJavaActivity.this, "点击了", Toast.LENGTH_SHORT).show()));
|
按钮的长按事件
1
2
3
|
//监听长按事件
mDisposable.add(RxView.longClicks(mButton)
.subscribe(o -> Log.e("", "")));
|
CheckBox事件
1
2
3
4
|
CheckBox checkBox = (CheckBox) findViewById(R.id.checkbox);
mDisposable.add(RxCompoundButton.checkedChanges(checkBox)
.subscribe(isChecked -> {
}));
|
搜索的时候,关键词联想功能 。debounce()在一定的时间内没有操作就会发送事件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
mDisposable.add(RxTextView.textChanges(editText)
//在 600 毫秒,没有操作的话,就执行事件
.debounce(600, TimeUnit.MILLISECONDS)
.map(o -> {
//获取 edit 的值
String key = editText.getText().toString();
return key;
})
.observeOn(Schedulers.io())
.map(o -> {
//获取数据
List<String> dataList = new ArrayList<String>();
return dataList;
})
.observeOn(AndroidSchedulers.mainThread())
.subscribe(o -> {
//adapter.clear();
//adapter.addAll(strings);
//adapter.notifyDataSetChanged();
}));
|
如果你喜欢我的文章,可以关注我的掘金、公众号、博客、简书或者Github!
简书: https://www.jianshu.com/u/a2591ab8eed2
GitHub: https://github.com/bugyun
Blog: https://ruoyun.vip
掘金: https://juejin.im/user/56cbef3b816dfa0059e330a8/posts
CSDN: https://blog.csdn.net/zxloveooo
欢迎关注微信公众号
