RxJava2学习之八:防止按钮重复(连续)点击

RxBinding

RxJava实现数据与视图的绑定使用到了RxBinding。RxBinding是一个开源项目,可以实现数据层与View层的绑定,当数据发生变化,View会自动更新UI。

RxBinding:https://github.com/JakeWharton/RxBinding

注意:RxBinding目前只支持RxJava1

RxJava操作符

本例涉及的RxJava操作符:

  • ThrottleFirst允许设置一个时间长度,之后它会发送固定时间长度内的第一个事件,而屏蔽其它事件,在间隔达到设置的时间后,可以再发送下一个事件

代码实现

添加依赖

1
2
3
compile 'com.squareup.retrofit2:retrofit:2.1.0'
compile 'com.squareup.retrofit2:converter-gson:2.1.0'
compile 'com.jakewharton.rxbinding:rxbinding:1.0.0'

RxJava实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Button button = (Button) this.findViewById(R.id.prevent_duplicate_click);
RxView.clicks(button).throttleFirst(1, TimeUnit.SECONDS)
.subscribe(new Observer<Void>() {
@Override
public void onCompleted() {

}

@Override
public void onError(Throwable e) {

}

@Override
public void onNext(Void aVoid) {
Log.i(TAG, "onNext: 按钮点击");
}
});

Powered by AppBlog.CN     浙ICP备14037229号

Copyright © 2012 - 2020 APP开发技术博客 All Rights Reserved.

访客数 : | 访问量 :