Избегайте нажатия на две кнопки быстро Android - PullRequest
0 голосов
/ 10 июля 2019

У меня есть два buttons в моем layout. Теперь обе кнопки выполняют различную сетевую операцию, используя coroutines. Проблема в том, что пользователь быстро нажимает на обе кнопки, и в определенный момент все становится грязно. Как я могу поставить немного газа в нажатие обеих кнопок? Приведенный ниже метод работает только для одного view одновременно.

fun View.setClickListener(debounceTime: Long = CLICK_DEBOUNCE_DURATION, action: () -> Unit) {
  this.setOnClickListener(object : View.OnClickListener {
    private var lastClickTime: Long = 0

    override fun onClick(v: View) {
      if (SystemClock.elapsedRealtime() - lastClickTime < debounceTime) return
      else action()

      lastClickTime = SystemClock.elapsedRealtime()
    }
  })
}

1 Ответ

0 голосов
/ 10 июля 2019

Просто объявите lastClickTime глобальную переменную в глобальной области видимости.И определите один и тот же код нажатия на обе кнопки с вашим желанием.

// Make this variable global, Outside of any methods. 
private var lastClickTime: Long = 0


fun View.setClickListener(debounceTime: Long = CLICK_DEBOUNCE_DURATION, action: () -> Unit) {
  this.setOnClickListener(object : View.OnClickListener {

    override fun onClick(v: View) {
      if (SystemClock.elapsedRealtime() - lastClickTime < debounceTime) return
      else action()

      lastClickTime = SystemClock.elapsedRealtime()
    }
  })
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...