关于版本问题
如果是 java 代码想使用,那么选择 https://github.com/JakeWharton/RxBinding/tree/2.2.0
最新的 3.3.0 是 kotlin 实现的。
rxjava 引用
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:
implementation 'com.jakewharton.rxbinding2:rxbinding:2.2.0'
Android library bindings:
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:
implementation 'com.jakewharton.rxbinding3:rxbinding:3.0.0'
AndroidX library bindings:
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:
implementation 'com.jakewharton.rxbinding3:rxbinding-material:3.0.0'
使用
//复合中断器
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 防抖处理
mDisposable.add(RxView.clicks(mButton)
.throttleFirst(2, TimeUnit.SECONDS) //两秒钟之内只取一个0点击事件,防抖操作
.subscribe(o -> Toast.makeText(RxJavaActivity.this, "点击了", Toast.LENGTH_SHORT).show()));
按钮的长按事件
//监听长按事件
mDisposable.add(RxView.longClicks(mButton)
.subscribe(o -> Log.e("", "")));
CheckBox事件
CheckBox checkBox = (CheckBox) findViewById(R.id.checkbox);
mDisposable.add(RxCompoundButton.checkedChanges(checkBox)
.subscribe(isChecked -> {
}));
搜索的时候,关键词联想功能 。debounce()在一定的时间内没有操作就会发送事件
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
优快云: https://blog.youkuaiyun.com/zxloveooo
欢迎关注微信公众号