ListView を含むフラグメントで 2 つの異なるビューを使用しています。これらの ListView は、同じ ListAdapter を使用します。横向きではフラグメントのリストビューを表示し、縦向きではリストビューを含むダイアログを表示するボタンがあります。私のフラグメントは setRetainedState(true) で、null でない場合は listAdapter を再作成しません。
ListItem の背景色のセレクターを設定しました (state_activated の場合 => 赤の背景、デフォルト => 透明)。ListView を初期化するとき (横向きに変更し、リストビューでダイアログを表示するとき)、ChoiceMode を CHOICE_MODE_SINGLE に設定しました。
このように、ListView の OnItemClickListener で「view.setActvated(true)」を呼び出すと、適切なアイテムが適切な背景を取得し、すべてが正常に機能します。
次のステップは、アクティブ化されたビューの参照をアダプターに保存することでした。私の getView() メソッドで、作成中のビューが保存したビューであるかどうかを確認します。その場合、「convertView.setActivated(true)」を呼び出して convertView を返します。しかし、ListView が同じアダプターで再作成されると、1 つの特定のビューに対して setActivated(true) が呼び出されたにもかかわらず、正しいビュー (または他のビュー) がアクティブに設定されません (Log.d で確認)。
OnItemClickListener で「view.setActivated(true)」を呼び出した場合にのみ正しくなります