这应该是最原始的方法了吧,来,先上代码:
布局文件:
1
1binding.button1.setOnClickListener(v->{2log("clickbutton1");3});当然,这里使用了MVVM中的DataBinding来查找控件的,你如果乐意,也可以用findViewById,甚至可以用Kotlin中的自动导入控件功能
1
1publicvoidonClickButton3(Viewv){2log("clickbutton3");3}三、使用MVVM的DataBinding来实现我们使用MVVM的设计模式,先看布局文件:
1publicclassClickHandler{2publicView.OnClickListeneronClickButton2=v->{3log("clickbutton2");4};5}四、利用RxView来实现其实这才是今天要说的重点,先导包:
1api'io.reactivex:rxandroid:1.2.1'#这是个RxJava的包2api'io.reactivex:rxjava:1.3.0'#这个是RxJava的包3api'io.reactivex.rxjava2:rxandroid:2.1.0'#这个是Rxjava2的包,下面用到的CompositeDisposable来自这个包4api'com.jakewharton.rxbinding2:rxbinding:2.1.1'#这个是RxView需要用到的包布局文件:
1
先全部贴出来吧:
有人就要问了,用这个是干啥嘞?
顾名思义,他是一个Disposable的容器类,我们都知道Rxjava是基于观察者模式的,如上述代码,我们通过RxView来建立一个观察者模型(模型??),这个模型只在Activity生命周期内有效,那我们就需要在Activity的onDetory方法中依次调用Disposable的dispose方法,CompositeDisposable就提供了一个容器类,我们每新建一个观察者模型(就叫模型吧。。。),调用CompositeDisposable.add的方法进行添加,在onDestory中直接clear就好了。clear方法会依次对容器内的Desposable实例进行dispose操作。是不是很简单??(简单个)
第二步,使用RxView来监听click事件:
具体的,看代码就行,这里只强调两个方法:
看明白上面的区别了吗?没有看明白请把上面的文字再读一遍(哈哈),反正我建议你用throttleFirst,不要用debounce。