さて、私は最終的にそれを解決しました、これが誰かに役立つことを願っています:
私がしたArrayList<Integer>
ことは、選択したアイテムのすべての位置を保存し、クリック時に背景色を切り替える を作成しました。
私のアダプターでは、次を定義します。
public ArrayList<Integer> selectedIds = new ArrayList<Integer>();
次の方法で:
public void toggleSelected(Integer position)
{
if(selectedIds.contains(position))
{
selectedIds.remove(position);
}
else
{
selectedIds.add(position);
}
}
ArrayList からアイテムを追加\削除します
私のgetViewメソッドで:
if (selectedIds.contains(position)) {
convertView.setSelected(true);
convertView.setPressed(true);
convertView.setBackgroundColor(Color.parseColor("#FF9912"));
}
else
{
convertView.setSelected(false);
convertView.setPressed(false);
convertView.setBackgroundColor(Color.parseColor("#000000"));
}
これは、位置が ArrayList に格納されているかどうかを確認します。その場合は、選択したとおりにペイントします。そうでない場合は、その逆です。
残っているのはOnItemClickリスナーだけです。追加しました:
((YourAdapter)list.getAdapter()).toggleSelected(new Integer(position));
YourAdapter が ListView のアダプターである場合
これは一般的な答えであるため、これが誰にも役立つことを願っています:)