Вместо того, чтобы делать выбранные элементы, вы хотите, чтобы они проверялись. Это позволяет использовать StateListDrawable
для изменения внешнего вида элемента, поскольку элементы не остаются выделенными, когда они находятся в сенсорном режиме. Вы должны перевести ваш ListView
в режим единого выбора, включить проверку списка элементов и использовать StateListDrawable
, чтобы изменить внешний вид отмеченных элементов.
Чтобы перевести ListView в режим единого выбора:
getListView().setChoiceMode(ListView.CHOICE_MODE_SINGLE);
Затем, когда вы хотите выделить элемент в вашем ListView
, вы делаете это:
getListView().setItemChecked(index, true);
Я считаю, что корневой элемент макета вашей строки должен реализовывать Checkable
, вы сможете найти пример CheckableRelativeLayout
или CheckableLinearLayout
онлайн.
Это делает ваш элемент «проверенным», но вам все равно нужно, чтобы он светился, поэтому в макете строки вы должны использовать StateListDrawable
, чтобы изменить его внешний вид при проверке, добавив его в макет:
android:background="@color/list_view_item_selector"
и создание файла color\list_view_item_selector.xml
следующим образом:
<?xml version="1.0" encoding="UTF-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_checked="true" android:drawable="@color/selected_item" />
<item android:drawable="@android:color/transparent" />
</selector>