I have a ListView with a checkbox:
Oncheckedchanged(..) is called when the user checks / deselects the listview listviewOncheckedchanged(..) is called again when the user clicks listitem via onItemClick(.....)
Is this a known issue? how to differentiate events.
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 () is called
- When no item is selected and the user clicks on it
- If the list consists of 3 elements and when the user clicks on any other elements, onItemclick () is called, and onCheckedChanged () is launched 3 times (= no: elements in the list)
android android-listview listview
user755
source share