我有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
如何跟踪已检查的项目?
答案 0 :(得分:1)
android.R.layout.simple_list_item_multiple_choice的来源使用了CheckedTextView
,因此您走的是正确的道路。只需将布局中的TextView
更改为CheckedTextView
。