@David Wasser 是正确的......单元格重用导致多个列表视图行以灰色背景绘制。
但是,如果您尝试根据 SELECTION STATE 设置背景,请考虑以下技术:
// set single or multi-select on your list (CHOICE_MODE_SINGLE = single row selectable)
// do this in onCreate
listView.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
.
.
.
// in your onItemClick, set the checked state of the item
// you DO NOT need to call notifyDataSetChanged
listView.setItemChecked(position, true);
并且,将列表视图单元格布局的背景设置为内置或自定义选择器
内置:
android:background="?android:attr/activatedBackgroundIndicator"
风俗:
android:background="@drawable/myListBackground"
可绘制/myListBackground.xml:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_activated="true" android:drawable="@color/lightgray" />
<item android:drawable="@color/transparent" />
</selector>
关键是 state_activated 条目,将在选择/选中项目时使用。您还可以为其他状态指定颜色,上面的示例引用了 colors.xml 表中的颜色。
有关这方面的更多详细信息,请查看“?android:attr/activatedBackgroundIndicator”如何工作?