java - android:listSelector 在notifyDataSetChanged()之后,颜色消失

标签 java android android-listview

我在使用此 ListView 时遇到了一个小问题:

<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:尽可能简化问题:

当我选择列表中的一个元素时,它会由于 android: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:要指定,当我滚动列表时,颜色会重新出现。

最佳答案

将此代码添加到您的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>

编辑:并从 ListView 中删除 android:listSelector="#48ad82"

关于java - android:listSelector 在notifyDataSetChanged()之后,颜色消失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17606775/

相关文章:

java - JSP 错误 : According to TLD, 标记形式 :input must be empty, 但不是

java - 上下文相关菜单 - Java ME

android - ArrayAdapter 中 ListView 第一行的不同布局

金鱼草设备上的android应用程序dequeuebuffer错误

java - 使用语音识别从 TextView 中删除最后一个词

android - 复用同一个ListView来显示不同的数据

android - 如何将新的Listview数据附加到无限滚动的ListView

Java代码重构问题

java - 在android中的asynctask中等待一个异步任务

android - 如何从来自android服务的视频网址获取缩略图?