これは、ListView の onItemClick イベントでビューを処理するためのベスト プラクティスの要求です。
ListView の各ビューには、ImageView、いくつかの TextView、および RelativeLayout でラップされた CheckBox が含まれています。どこでも選択されているアイテムビューで、必要に応じてチェックボックスをオン/オフにしたいと思います。また、表示スタイルを変更するオプションが必要です。つまり、ストロークに色を付けてアイテムを強調表示します。
私の現在の問題は、これを行う他のすべての人に似ています。ListView のリサイクルにより、onItemClick に渡されたビューを取得し、backgroundresource またはチェックボックスをオンにした値を設定すると、現在レンダリングされていないビューの値も変更されます。この目標を達成するための最善の方法を知りたいです。
onClickListener を実装して ArrayAdapter で CheckBox イベントを直接処理するパターンがあることは知っていますが、これは CheckBox の直接選択にのみ応答すると思います。ビューの残りの部分をクリックしても無視されます。さらに、CheckBox の onClick イベントが発生すると、クリック イベントが消費されるため、データを設定する必要がある onItemClick は発生しません。
また、CheckedTextView は RelativeLayout 内にあり、checked イベントを ListView に渡さないため、使用できません。チェックされたビュー イベントを処理するために Checkable を実装する独自の CheckedViewLayout を作成することが推奨される投稿がありました。これを進めた場合、新しいレイアウト クラスを xml で参照できるようになりますか?それとも、各ビューを再度 Java コードで設計する必要がありますか?
他の誰かがより良い解決策を持っている場合は、私に知らせてください。