ListViews
по умолчанию не имеет установленного choiceMode
(установлено none
), поэтому текущий выбор не отображается визуально.
Чтобы изменить это, вам просто нужно установить атрибут choiceMode
вашего ListView
на singleChoice
.Если вы хотите создать собственный фон для выбранных элементов в списке, вы также должны установить атрибут listSelector
.Там вы можете указать не только цвета, но и объекты для рисования (изображения, слои / объекты для рисования).
<ListView android:id="@+id/my_list"
android:choiceMode="singleChoice"
android:listSelector="@android:color/darker_gray" />
Если вы не используете ListView
напрямую, а ListActivity
, то этиатрибуты должны быть установлены из кода, поэтому вы должны расширить метод вашей деятельности onCreate
следующими строками:
getListView().setChoiceMode(ListView.CHOICE_MODE_SINGLE);
getListView().setSelector(android.R.color.darker_gray);
Поэтому, если вы использовали прослушиватель щелчков для изменения фона выбранной строки, удалитеиз вашего кода и используйте правильный метод сверху.
Ответ на обновление
Если вы устанавливаете фон из метода getView, вместо использования статического цветаПримените список состояний, который можно нарисовать, к фону строки с duplicateParentState, установленным в true.Таким образом, он изменит свое отображение в зависимости от текущего состояния элемента: обычный, сфокусированный, нажатый и т. Д.