Posted at

AndroidのOnClickListenerでの2度押しを防止したい

AndroidでOnClickListenerを普通に実装して、頑張って連続タップするとイベントが2回発生して、例えば何か画面を開く処理が入ってたら画面が2つ起動しちゃったりするんですよね。

なのでこんな感じの拡張関数を作ってみました。

fun View.setOnOneClickListener(onClick: (view: View?) -> Unit) = setOnClickListener {

val lastClickTime = getTag(R.id.click_time) as? Long ?: 0L
setTag(R.id.click_time, SystemClock.elapsedRealtime())
if (SystemClock.elapsedRealtime() - lastClickTime < 1000) {
return@setOnClickListener
}
onClick(it)
}

これでいいのか感が正直あるので、何か他に良い方法があったら誰か教えてほしいです。


参考

https://stackoverflow.com/questions/5608720/android-preventing-double-click-on-a-button/9950832