0

これは、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 コードで設計する必要がありますか?

他の誰かがより良い解決策を持っている場合は、私に知らせてください。

4

2 に答える 2

1

ねえ、このリンクはあなたに役立つかもしれないと思います。あなたのための詳細があります

Android ListView チェックボックスの例 - OnItemClickListener() および OnClickListener()

于 2013-10-04T08:46:12.770 に答える
0

最後に、Checkable を実装した独自の CheckableRelativeLayout を作成し、それを各 ListView アイテムのメイン コンテナーとして使用しました。ビューがクリックされたかどうかを追跡するために、CheckableRelativeLayout 内でブール値を使用しました。

必要に応じて、最終クラスを投稿できます。

于 2013-10-09T18:08:01.123 に答える