使用CursorAdapter(CHOICE_MODE_MULTIPLE)在列表视图上设置选中状态

时间:2013-10-02 12:55:53

标签: android listview android-listview

我有ListFragment包含多项选择ListView。如果我将CursorAdapter中的布局设置为android.R.layout.simple_list_item_multiple_choice,我将能够在ListView中看到已检查的项目。但我想使用自定义布局并在选中项目时更改背景颜色。这似乎很简单,但我找不到问题的答案。我想在我的适配器的bindView中设置颜色,但我不确定它在哪里,因为我的适配器不知道检查了哪些项目。所以我尝试使用选择器并将其应用于textview的背景,如下所示:

row.xml

<?xml version="1.0" encoding="utf-8"?>

<TextView xmlns:android="http://schemas.android.com/apk/res/android"
          android:id="@+id/name"
          android:layout_width="match_parent"
          android:layout_height="wrap_content"
          android:gravity="center_vertical"
          android:textAppearance="?android:attr/textAppearanceMedium"
          android:minHeight="?android:attr/listPreferredItemHeight"
          android:padding="6dp"
          android:background="@drawable/list_selector"/>

list_selector.xml

<?xml version="1.0" encoding="utf-8"?>

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <!-- Pressed -->
    <item android:state_pressed="true"
          android:drawable="@drawable/list_pressed" />

    <!-- Selected -->
    <item android:state_selected="true"
          android:drawable="@drawable/list_active" />

    <!-- Checked -->
    <item android:state_checked="true"
          android:drawable="@drawable/list_active" />

    <!-- Normal -->
    <item android:drawable="@drawable/list_normal" />
</selector>

按下状态正在运行,但未检查状态。我想知道我的TextView是否经过检查。但如果不是,ListView如何跟踪已检查的项目?

1 个答案:

答案 0 :(得分:1)

android.R.layout.simple_list_item_multiple_choice的来源使用了CheckedTextView,因此您走的是正确的道路。只需将布局中的TextView更改为CheckedTextView