Android ListView теряет проблему выделения - PullRequest
1 голос
/ 13 января 2010

Привет

У меня есть макет, который содержит ListView. Каждый вид (строка) в этом ListView является LinearLayout, который содержит 3 вида - CheckBox, ImageView и TextView (горизонтальный)

Моя проблема такая: если я использую трекбол, чтобы выделить строку в ListView, она работает (цвет фона строки оранжевый). Нажав на трекбол, когда строка выделена, я переключаю текущий отображаемый макет на другой (setContentView ()). Теперь, если повторно отображать исходный макет с помощью ListView (я сохраняю его экземпляр для повторного отображения, он не создается заново!), Выделенная строка больше не подсвечивается. Согласно Google это нормально, и выделение вернется, как только я воспользуюсь трекболом.

Настоящая проблема в том, что даже если я сейчас использую трекбол для перемещения вверх или вниз в списке, нет другая строка в ListView становится подсвеченной. Вместо этого в каждой строке, которая должна быть выделена в результате прокрутки, выбирается TextView, и я знаю, что, поскольку я установил, что TextView работает (TruncateAt.MARQUEE).

ТОЛЬКО если я щелкну трекбол, то подсветка вернется к строке, которая в данный момент тикает в TextView.

Я пытался решить эту проблему, установив TextView как не фокусируемый, не активируемый и не отключаемый. Я даже пытался установить setItemsCanFocus (false) в ListView - все еще безуспешно.

Пожалуйста, помогите мне ...

Спасибо!

1 Ответ

0 голосов
/ 13 января 2010

У меня есть макет, который содержит Посмотреть список. Каждый вид (строка) в этом ListView - это LinearLayout, который содержит 3 вида - CheckBox, ImageView и TextView (горизонтальный)

Вместо этого используйте CheckedTextView и ImageView, и используйте android:choiceMode с вашим ListView.

Теперь, если повторно отображать оригинал макет с ListView (я храню его экземпляр для его повторного отображения, это не воссоздан!), выделенная строка НЕ ​​подсвечивается больше.

Не делай этого. Используйте ViewFlipper или измените видимость ListView и всего, что вы показываете, или что-то еще, если вы чувствуете, что вам нужно сохранить все это в одном Activity. Или, как предполагает мистер Лью, когда вы нажимаете на ListView, запускаете еще один Activity.

Я подозреваю, что комбинация из них поможет с вашей проблемой.

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