Как отследить момент отпускания элемента в GridView после его нажатия
GridView реализует двумерный массив элементов (клавиатура калькулятора, где нужно чтобы кнопочка выглядела нажатой, пока пользователь удерживает палец на ней). Можно отследить момент нажатия элемента с помощью setOnItemClickListener и получить в параметре position какой элемент был нажат. Но как отследить момент отпускания этого элемента и получить его position?
Пробовал setOnTouchListener, но он применяется ко всему GridView и не определяет position нажатого элемента.
Я новичек в теории. Но интуиция подсказывает, что должен быть какой-то способ переопределить либо setOnItemClickListener, дополнив его параметром event: MotionEvent; либо как-то заставить setOnTouchListener определять какой элемент в GridView был нажат.
Ответы (1 шт):
Решил вопрос самостоятельно) Использовал setOnTouchListener. Позицию нажатого элемента в GridView удалось определить с помощью метода pointToPosition. С помощью GidView реализована клавиатура. Код выглядит примерно так:
keyboard.setOnTouchListener { v, event ->
when (event.action) {
MotionEvent.ACTION_DOWN -> {
ButtonPositionId = (v as GridView).pointToPosition(event.rawX.toInt(), event.rawY.toInt())
Log.d("event", "Нажато")
//Действие при нажатии
}
MotionEvent.ACTION_UP -> {
ButtonPositionId = (v as GridView).pointToPosition(event.rawX.toInt(), event.rawY.toInt())
Log.d("event", "Отпущено")
//Действие при отпускании
}
}
else -> {
}
}
}
Возможно, кому пригодится;)