Created
February 10, 2024 07:46
-
-
Save imandaliya/398a3c611d76090212dbd3919f21efae to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// 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