0

Я знаю, что это обсуждалось много раз в таких вопросах, как этот question и this один. Но я должен сказать, что это не работает для меня.Как пометить элемент списка?

Что я хотел достичь, это отметить элемент ListView через свой CustomAdapter в особой ситуации. Таким образом, не через пользователя и не щелкните слушателей. У меня есть рабочее решение, установив фоновый рисунок для конвертирования.

Теперь я хочу изменить это и дать селектору задание, которое является более чистым решением. Но я не могу заставить его работать. Нет проблем, чтобы установить поведение для нажатия элемента и установить другой цвет. Но я не могу отметить его как выбранный после того, как я нажал на элемент.

Я пробовал разные комбинации с помощью своего listview_item_selector и listview_selector. И я думаю, что я пропустил что-то очень общее. Вот почему я сделал настройку, чтобы выяснить, как пометить элемент после его нажатия.

Вот мой list_item_selector:

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:state_pressed="true" android:drawable="@android:color/transparent"/> 
    <item android:state_selected="true" android:drawable="@android:color/transparent"/> 
    <item android:drawable="@drawable/state_normal"/> 
</selector> 

И мой listview_selector выставиться в ListView в качестве селектора:

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:state_pressed="true" android:drawable="@drawable/state_pressed"></item> 
    <item android:state_selected="true" android:drawable="@drawable/selected_item"/> 
</selector> 

Как я уже сказал state_pressed работает. Но state_selected гонит меня орехами.

По крайней мере, мой макет для пользовательских элементов:

<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/listview_item" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:orientation="vertical" 
    android:background="@drawable/listview_item_selector"> 

    <TextView 
     android:id="@+id/list_tv1" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:textColor="#FFFFEE"/> 

    <TextView 
     android:id="@+id/list_tv2" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:textColor="#FFEEEE"/> 
</LinearLayout> 

Я был бы признателен за любые предложения.

ответ

1

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

см моего вопроса для примера

Showing the current selection in a listview

затем использовать

listview.setItemChecked(position,true); 
+0

Большое спасибо за это! Я не знал об этом состоянии и что я должен установить активированный компонент. Спас день –

Смежные вопросы