Skip to content

Instantly share code, notes, and snippets.

@imandaliya
Created February 10, 2024 07:46
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save imandaliya/398a3c611d76090212dbd3919f21efae to your computer and use it in GitHub Desktop.
Save imandaliya/398a3c611d76090212dbd3919f21efae to your computer and use it in GitHub Desktop.
// Original Thread
// https://medium.com/@simon.gerges/solving-android-multiple-clicks-problem-kotlin-b99c06135da0
import android.os.SystemClock
import android.view.View
fun View.setSafeOnClickListener(onSafeClick: (View) -> Unit) {
val safeClickListener = SafeClickListener {
onSafeClick(it)
}
setOnClickListener(safeClickListener)
}
class SafeClickListener(
private var defaultInterval: Int = 1000, private val onSafeCLick: (View) -> Unit
) : View.OnClickListener {
private var lastTimeClicked: Long = 0
override fun onClick(v: View) {
if (SystemClock.elapsedRealtime() - lastTimeClicked < defaultInterval) {
return
}
lastTimeClicked = SystemClock.elapsedRealtime()
onSafeCLick(v)
}
}
//Example
Replace
button.setOnClickListener {
}
With
button.setSafeOnClickListener {
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment