ListView设置已检查项目背景颜色

时间:2012-05-26 14:14:26

标签: android list

我为Table设计了一个双窗格UI。在左窗格中,我显示列表视图,在右窗格中,我显示列表详细信息。我想将列表行显示为用户单击的选定列表,并在右窗格中显示其显示。

所以我设置下面的代码来选择项目。

 android:choiceMode="singleChoice"
 android:background="@drawable/selector_list_view"

列表布局位于下面的布局文件中。

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:padding="1dp"
android:background="@drawable/bg_dialog_fragment">


    <Button     
        android:id="@+id/SortByTitle"
        android:layout_width="0dip"
        android:textColor="@color/solid_black"
        android:background="@drawable/sort_button_selected"
        android:layout_height="wrap_content"
        android:layout_marginRight="0dip"
        android:paddingTop="5dip"
        android:paddingBottom="5dip"
        android:paddingRight="8dip"
        android:textSize="15sp"
        android:textStyle="bold"
        android:layout_weight="0.5"
        android:text="@string/project"
        android:drawablePadding="5dip"
        android:drawableRight="@drawable/up_arrow"/>
    <Button
        android:id="@+id/SortByDate" 
        android:textColor="@color/solid_black"
        android:background="@drawable/sort_button_unselected"
        android:layout_width="0dip"
        android:layout_height="wrap_content"
        android:paddingTop="5dip"
        android:layout_marginLeft="0dip"
        android:paddingBottom="5dip"
        android:textStyle="bold"
        android:textSize="15sp"
        android:layout_weight="0.5"
        android:drawablePadding="5dip"
        android:paddingRight="8dip"
        android:text="@string/due_date"/>
</LinearLayout>

<TextView
    android:paddingRight="1dp"        
    android:layout_marginRight="1dp"
    android:id="@+id/TextViewTitle"
    style="@style/title_style"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_below="@+id/SortOrder"
    android:text="@string/workflow_incourt" />

  <RelativeLayout
    android:layout_marginRight="1dp"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_above="@+id/SearchFooter"
    android:layout_below="@+id/TextViewTitle"
    android:background="@color/solid_white"
   >

    <ListView
        android:id="@+id/ListViewProject"
        style="@style/listview_style"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:choiceMode="singleChoice"
        android:background="@drawable/selector_list_view" />

</RelativeLayout>

可绘制的是

<selector xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:state_checked="true" android:state_focused="true" android:drawable="@android:color/background_dark" />
<item android:state_checked="true" android:state_focused="false" android:drawable="@android:color/background_dark" />
<item android:state_selected="true" android:drawable="@android:color/background_dark"/>
<item android:state_checkable="true" android:drawable="@android:color/background_dark"/>

但仍然没有将列表行显示为已选中。我还需要做些什么来实现这一目标。

还附加了所选项目的屏幕截图。 enter image description here

1 个答案:

答案 0 :(得分:0)

我认为您可以在一个变量中保留所选项目ID的跟踪。然后在:

  • 如果ID与您设置的存储ID(例如红色)相匹配,则适配器的GetView
  • OnListItemClickListener,您可以使用新ID ref
  • 替换旧ID