0

Java と Android の開発は初めてです。

アプリ内に ListView を含むビューがあります

次に、ArrayAdapter から継承するカスタム アダプターがあります。

getView メソッドのビュー内で、テキストとチェックボックスを含む行を返します

これまでのところ、これはすべてうまく機能しており、リストにデータが入力され、アイテムを確認でき、すべてのイベントが期待どおりに発生しているようです。

私が抱えている問題は、最初の 3 つの項目をチェックしてから、11 番目、12 番目、13 番目の項目がチェックされていることに気付き、スクロールすると、定期的に他のチェックボックスも同じパターンでチェックされているように見えることです。

約10個のチェックボックスをチェックすると、約80個のリスト内のすべてのアイテムがチェックされます...

誰かが私が間違ったことを説明できますか?

チェックボックスのチェック状態をどこにも設定していないため、コードがこれを説明するのに役立つとは思いません。これはすべてそれ自体で処理されるため、アイテムがチェックされているという事実は私を困惑させます。

前もって感謝します

4

2 に答える 2

3

これは、Android がパフォーマンスの目的でリスト アイテムをリサイクルするために発生しています。ここでは、この問題の解決策があります: ListView reusing views when ... I do not want to

お役に立てれば幸いです:)

于 2012-07-16T22:08:04.950 に答える
1

これは予期される動作です。ListView はアダプタのビューを再利用します。したがってSet、「選択したアイテム」を保持し、CheckBoxクリックしたときにアイテムを追加または削除してから、getView に次のコードを追加します。

if(mSelected.contains(getItem(position)) {
    checkBox.setChecked(true);
} else {
    checkBox.setChecked(false);
}

このようにして、行が再利用さCheckBoxれると、適切なステータスになります。

于 2012-07-16T22:11:52.083 に答える