Ho un ListView con checkbox:onCheckedChanged sparato più volte, ListView con checkbox
Oncheckedchanged(..)
viene chiamato quando controllo utente/item deselezionare il listviewOncheckedChanged(..)
chiamato di nuovo quando l'utente clicca il listitem viaonItemClick(.....)
Si tratta di un problema noto? come differenziare gli eventi.
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder viewHolder = null;
if (convertView == null) {
LayoutInflater inflator = context.getLayoutInflater();
convertView = inflator.inflate(R.layout.row, null);
viewHolder = new ViewHolder();
viewHolder.text = (TextView) convertView.findViewById(R.id.label);
viewHolder.checkbox = (CheckBox) convertView.findViewById(R.id.check);
viewHolder.imageview= (ImageView) convertView.findViewById(R.id.imageView1);
viewHolder.checkbox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
int getPosition = (Integer) buttonView.getTag(); // Here we get the position that we have set for the checkbox using setTag.
list.get(getPosition).setSelected(buttonView.isChecked()); // Set the value of checkbox to maintain its state.
}
});
convertView.setTag(viewHolder);
convertView.setTag(R.id.label, viewHolder.text);
convertView.setTag(R.id.check, viewHolder.checkbox);
convertView.setTag(R.id.imageView1, viewHolder.imageview);
} else {
viewHolder = (ViewHolder) convertView.getTag();
}
viewHolder.checkbox.setTag(position); // This line is important.
viewHolder.imageview.setTag(position);
viewHolder.text.setText(list.get(position).getName());
viewHolder.checkbox.setChecked(list.get(position).isSelected());
// change the default-image here
if(list.get(position).getcontact_id()==5)
{
viewHolder.imageview.setImageResource(android.R.drawable.ic_dialog_map);
}...
..
return convertView;
}
EDIT
onCheckedChanged() viene chiamato
- Una volta, quando alcuna voce vengono selezionati e utente fa clic sulla casella di controllo
- Se la lista è composta da 3 elementi e quando l'utente clicca su qualsiasi altro elemento, onItemclick() viene richiamato e onCheckedChanged() viene generato 3 volte (= no: di elementi nella listview)
Sarebbe bello se potessimo vedere il codice ... –
quale parte del codice-. onclickitem() o customadapter? – user755
Penso che il luogo in cui stai impostando il tuo 'OnCheckChangedListener' sarebbe bello da vedere ... – Darwind