@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"
drawable/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」はどのように機能しますか?を参照してください。