2013-07-12 3 views
0

У меня небольшая проблема здесь с этим ListView:андроид: listSelector после notifyDataSetChanged(), цвет исчезает

<ListView android:id="@+id/employees_list" 
        android:layout_width="fill_parent" 
        android:layout_height="fill_parent" 
        android:paddingLeft="2dp" 
        android:paddingRight="1dp" 
        android:background="@drawable/borderlist" 
        android:choiceMode="singleChoice" 
        android:listSelector="#48ad82" 
        android:layout_below="@id/employees_header"> 
</ListView> 

Который содержит этот макет:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/row_employee" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:paddingLeft="10dp" 
    android:paddingTop="13dp" 
    android:paddingBottom="13dp" 
    android:descendantFocusability="blocksDescendants"> 

    <RadioButton android:id="@+id/radio_employee" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentLeft="true" 
     android:focusable="false"/> 

    <TextView 
     android:id="@+id/text_employeename" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:textSize="18sp" 
     android:layout_toRightOf="@id/radio_employee" 
     android:layout_marginTop="3dp" 
     android:layout_marginLeft="5dp" 
     android:focusable="false" /> 

</RelativeLayout> 

edit2: Упрощение на вопрос так как я могу:

Когда я выбираю элемент в списке, он меняет цвет из-за андроида: listSelector. Когда я вызываю notifyDataSetChanged() в коде, этот цвет исчезает, пока я не прокручу список вверх или вниз. Как я могу заставить цвет не исчезать?

Кто-то ответил использовать селектор, как это:

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 

    <item android:state_focused="true"> 
    <shape> 
     <solid android:color="#48ad82" /> 
    </shape> 
</item> 
    <item> 
    <shape> 
     <solid android:color="#unselectedcolor" /> 
    </shape> 
</item> 

</selector> 

Я поставил этот селектор в качестве фона. Это не работает вообще. Цвет элементов даже не изменяется, когда я их выбираю

Редактирование 1: Чтобы указать, цвет отображается при прокрутке списка.

+0

Я не понять основную проблему. Не могли бы вы упростить свой вопрос ... – DynamicMind

+0

Вы нашли способ решить эту проблему? –

ответ

1

Добавьте этот код в ваш RelativeLayout:

android:background="@drawable/list_item_selector" 

Добавить этот файл в папку вытяжки

list_item_selector.xml

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 

    <item android:state_focused="true"> 
    <shape> 
     <solid android:color="#48ad82" /> 
    </shape> 
</item> 
    <item> 
    <shape> 
     <solid android:color="#unselectedcolor" /> 
    </shape> 
</item> 

</selector> 

EDIT: И удалить андроид: listSelector =» # 48ad82 "из вашего ListView

+0

Это совсем не работает. Цвет state_focused не отображается. – Sefam

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