我的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()
}
})
}
答案 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()
}
})
}