Как сохранить выделение элементов ListView после выбора в Android
В Android поддержание выбранного состояния элементов ListView может улучшить взаимодействие с пользователем, предоставляя четкий визуальный индикатор текущего выбора. Однако иногда разработчики сталкиваются с проблемами, когда выбранный элемент теряет свою подсветку после определенных событий, таких как прокрутка или дальнейшее взаимодействие с ListView.
Задание
Разработчик недавно столкнулся с этой проблемой при работе с двумя ListViews в макете XML. Один ListView отображал список клиентов, а другой — подробную информацию о выбранном клиенте. Когда клиент был выбран в первом ListView, разработчик хотел сохранить его выделенное состояние при обновлении второго ListView соответствующими сведениями. Однако подсветка не сохранялась.
Решение
Для решения этой проблемы существует несколько подходов:
1. Использование атрибутов XML:
В макете XML примените следующие атрибуты к элементу управления ListView, который должен сохранять подсветку выбранного элемента:
android:choiceMode="singleChoice" android:listSelector="@drawable/list_selector"
Замените @drawable/list_selector пользовательским селектором, который определяет желаемый цвет выделения.
2. Программный подход:
В качестве альтернативы можно использовать следующий код, чтобы программно установить режим выбора ListView и цвет выделения:
listView.setChoiceMode(AbsListView.CHOICE_MODE_SINGLE); listView.setSelector(getResources().getDrawable(R.drawable.list_selector));
3. Избегайте манипулирования представлениями:
Важно отметить, что управление представлениями непосредственно через прослушиватели событий может быть ненадежным из-за временного характера представлений в ListView. Изменения, внесенные для просмотра фона, могут не сохраниться после прокрутки или других событий.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3