避免快速点击两个按钮的android

时间:2019-07-10 09:58:23

标签: android kotlin

我的buttons中有两个layout。现在,两个按钮都使用coroutines执行不同的网络操作。问题是用户快速单击两个按钮,并且在某一点上情况变得混乱。如何在两个按钮的单击中都加油门?以下方法一次仅适用于一个view

fun View.setClickListener(debounceTime: Long = CLICK_DEBOUNCE_DURATION, action: () -> Unit) {
  this.setOnClickListener(object : View.OnClickListener {
    private var lastClickTime: Long = 0

    override fun onClick(v: View) {
      if (SystemClock.elapsedRealtime() - lastClickTime < debounceTime) return
      else action()

      lastClickTime = SystemClock.elapsedRealtime()
    }
  })
}

1 个答案:

答案 0 :(得分:0)

只需在全局范围内声明lastClickTime全局变量。并在您想要的动作上在两个按钮上定义相同的点击代码。

// Make this variable global, Outside of any methods. 
private var lastClickTime: Long = 0


fun View.setClickListener(debounceTime: Long = CLICK_DEBOUNCE_DURATION, action: () -> Unit) {
  this.setOnClickListener(object : View.OnClickListener {

    override fun onClick(v: View) {
      if (SystemClock.elapsedRealtime() - lastClickTime < debounceTime) return
      else action()

      lastClickTime = SystemClock.elapsedRealtime()
    }
  })
}