2
名前と番号を持つリストビューと、SimpleAdapterの連絡先からチェックボックスに値が設定されているアイテムをクリックしてアイテムの色を変更したり、チェックボックスを有効にしたり、ユーザーが同じアイテム私はその項目の選択を解除したい。 どうすればいいですか? ありがとう。リスト表示アイテムの選択を解除しますか?
これは私が成功した色を変更することができ、私のコードですが、私は今、再びその状態を変更するために、第2クリックでその特定の項目のためと比べて、チェックボックスの状態を変更するはありませんか:
lImenik.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> adapter, View view, int position, long id) {
// TODO Auto-generated method stub
Object obj = lImenik.getItemAtPosition(position);
String tmp = obj.toString();
view.setBackgroundColor(Color.GRAY);
for(int i = 0; i < adapter.getChildCount(); i++){
if(i == position){
if(position != prePos){
adapter.getChildAt(i).setBackgroundColor(Color.GRAY);
prePos = position;
} else {
adapter.getChildAt(i).setBackgroundColor(0x191919);
prePos = -1;
}
}
}
}
});
}
ではありませんそれは働いていますが、リストの最初のアイテムの場合のみ、それはなぜですか? 2番目の項目をクリックすると、最初のチェックボックスが再び状態を変更します。 – Wolf87
これは、古い表示が再描画されたときに表示されないためです。あなたのデータの状態を保存する必要がありますので.... list.size()の長さでブール値の配列を取ってください。各項目をfalseにマークします。あなたのListAdapterのgetView()メソッド。ビューマークからチェックボックスを抽出するsetChecked(array [position]);これにより、booleanの状態を配列リストと同期させることができます。 =次に、listViewのonItemClick()で配列を設定します。array [position] =!array [position];次にcheckbox.setChecked(array [position]);これを試して。また、古いビューのチェックデータも保存されます – Arslan