答えを見つけました。私の問題はセレクターの状態ではありません。セレクターをすべてのアイテムで同じ状態にしたいのです! 問題は、アダプター内のアイテムの特定のブール値が false の場合はアイテムを規則的にし、ブール値が true の場合は X を色付けしたいのですが、色が X の場合でも、選択または押されたら透明にしたいということです。
したがって、解決策は次のxmlです。
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true"
android:drawable="@android:color/transparent" /> <!-- pressed -->
<item android:state_selected="true"
android:drawable="@android:color/transparent" /> <!-- focused -->
<item android:drawable="@color/viewed_hotels_color" /> <!-- default -->
</selector>
リスト自体が状態を取得するものであるにもかかわらず、それは状態をその子(つまりリスト項目)に渡しますが、そうではないと思っていました。android:focused のみがここでは有効ではありません。android リスト項目はフォーカスされていませんが、選択されています...押されていないか選択されていない状態でわかるように、デフォルトの色を指定します。それ以外の場合は透明で、セレクターはすべての人に表示されます.
私のアダプターでは、次のコードが必要です( getView() メソッド内):
View itemView = convertedView; <- i'll spare you the layout details...
Item item = getItem(position);
if( item.isViewed() ){
itemView.setBackgroundResource(R.drawable.viewed_item_background);
}else{
itemView.setBackgroundDrawable(null);
}
これにより、すべてのアイテムが適切な背景を取得するようになります。もちろん、アイテムの状態が閲覧済みに変更され、それを表示したい場合は、アダプターで notifyDatasetCahnged() を呼び出す必要があります。