### 此类用于扩展功能setOnSingleClickListener,这样做的目的是防止重复响应点击/触摸。
使用示例:
view.setOnSingleClickListener {
//TODO 这里将会执行你的点击事件
setUIData()
}
扩展写法:
fun View.setOnSingleClickListener(listener: (View) -> Unit) {
setOnClickListener(OnSingleClickListener(listener))
}
自定义类OnSingleClickListener:
/**
* 此类用于扩展功能setOnSingleClickListener
* 这样做的目的是防止重复响应点击/触摸。
*/
class OnSingleClickListener : View.OnClickListener {
private val listener: View.OnClickListener
private var prevTime = 0L
constructor(listener: (View) -> Unit){
this.listener = View.OnClickListener { listener.invoke(it) }
}
companion object{
private const val DELAY = 1000L
}
override fun onClick(v: View?) {
val time = System.currentTimeMillis()
if(time >= prevTime + DELAY){
prevTime = time
listener.onClick(v)
}
}
}