У меня есть два рисунка, которые используются в качестве фона, чтобы указать состояние (нажата или выбрана) элементов моего списка.Вытянутый Pressed является селектором, но без указания состояния;он подключен через XML, чтобы быть андроидом: listSelector для списка.
<?xml version="1.0" encoding="utf-8"?>
<selector
xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:drawable="@drawable/my_actual_drawable" />
</selector>
Однако выбранный объект рисования применяется кодом, поскольку он сложен, и требуется более одного простого изменения фонового рисования.когда выбран элемент.
Если я быстро нажимаю между двумя элементами списка, один элемент может иметь (и сохранять) выделенное выделенное, тогда как другой элемент имеет (и сохраняет) выделенное выделенное.Я считаю, что это происходит потому, что печать происходит так быстро, что базовая структура не интерпретирует ее как щелчок, поэтому onItemClick
не достигает моего списка.
Одним из решений является использование селектора с состоянием (вот чтоСелекторы предназначены для!):
<?xml version="1.0" encoding="utf-8"?>
<selector
xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true"
android:drawable="@drawable/my_actual_drawable" />
</selector>
, но это приводит к неудачному отключению подсветки Pressed до того, как мой код сможет применить выделенную выделенную область, поэтому между двумя состояниями возникает вспышка неприветливости, неважнокак рано в обработчике onItemClick
я положил вызов setBackgroundResource
.
Другим решением было бы отслеживать не только onItemClick
события, но также onTouch
события, и обрабатывать все в коде;это, кажется, делает вещи слишком медленными.
Что я могу сделать, чтобы избежать как вспышки, так и состояния двойного выбора?