[Qiita] AndroidのOnClickListenerでの2度押しを防止したい
※この記事は以前Qiitaに投稿されていた古い記事です
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
元記事のQittaのコメントにて、こういうのもあるよと教えてもらいました(こっちのが良さそう)
https://github.com/JakeWharton/butterknife/blob/master/butterknife-runtime/src/main/java/butterknife/internal/DebouncingOnClickListener.java
コメント
コメントを投稿