web-dev-qa-db-ja.com

Kotlinコルーチンを使用してsetOnClickListenerを1秒間デバウンスするにはどうすればよいですか?

ユーザーがボタンをすばやくタップすると、showDialog()メソッドが複数回重ねて表示されるため、閉じると、その後ろに別のものが表示されます。ハンドラーを使用せずに1秒間2回目のタップを無視する方法、または前回のタップの時間を確認する方法を探しています。

//Button that opens a dialog
button.setOnClickListener {
    showDialog()
}

KotlinコルーチンまたはKotlinフローを将来の実装に使用するソリューションを探しています。

3

私は正直にお勧めします corbind

この素晴らしいライブラリを使用すると、setOnClickListenerを忘れて、次のようなフローを処理できます。

binding.myButton.clicks() .debounce(500) .onEach { doSomethingImportant() } .launchIn(viewLifecycleOwner.lifecycleScope)

使い方は本当に簡単で、ビューバインディングを使用すると、アプリを非常に簡単に作成できます。コーディングがお役に立てば幸いです。

1
qki