Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/198.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 使用RxBinding同步两个视图_Android_Rx Java2_Throttling_Rx Binding - Fatal编程技术网

Android 使用RxBinding同步两个视图

Android 使用RxBinding同步两个视图,android,rx-java2,throttling,rx-binding,Android,Rx Java2,Throttling,Rx Binding,我使用RxJava的throttleFirst一秒钟来避免快速点击按钮,但是我也希望在点击按钮时,第二个按钮也被禁用一秒钟,反之亦然, 所以,简而言之,我不允许快速点击这两个按钮一个接一个。。。你推荐什么?我可以使用RxBinding实现这一点吗 RxView.clicks(button) .throttleFirst(1000, TimeUnit.MILLISECONDS) .subscribe {

我使用RxJava的throttleFirst一秒钟来避免快速点击按钮,但是我也希望在点击按钮时,第二个按钮也被禁用一秒钟,反之亦然, 所以,简而言之,我不允许快速点击这两个按钮一个接一个。。。你推荐什么?我可以使用RxBinding实现这一点吗

RxView.clicks(button)
                .throttleFirst(1000, TimeUnit.MILLISECONDS)
                .subscribe {
                    doSomething()
                }

这里有一个可能的方法

  • 为每个按钮创建一个流
  • 您可能需要知道单击了哪个按钮,因此
    将每个流的输出映射到订阅服务器中将处理的某个已知值
  • merge
    将两个流合并在一起,然后
    throttleFirst
    合并的流
  • 这一切看起来都是这样的:

    RxView.clicks(button1).map { "button1" }
            .mergeWith(RxView.clicks(button2).map { "button2" })
            .throttleFirst(1, TimeUnit.SECONDS)
            .subscribeBy(
                    onNext = { value ->
                        if(value == "button1") {
                            // handle button1 click
                        } else {
                            // handle button2 click
                        }
                    },
                    onError = {
                        ...
                    }
            )
    
    也许不是最优雅的,但希望它至少能激发一些思考