投稿

4月, 2019の投稿を表示しています

[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