private int selection = -1;
ViewHolder holder = null;
if(convertView == null){
holder = new ViewHolder()
LayoutInflater inflater = getActivity().getLayoutInflater();
View row = inflater.inflate(R.layout.psip_settings_callquality_listitem, parent, false);
holder.itemTitle = (TextView) row.findViewById(R.id.txtCQViewItem);
holder.itemDesc = (TextView) row.findViewById(R.id.txtCQViewDesc);
holder.itemToggle = (ToggleButton) row.findViewById(R.id.togCQViewItem);
convertView = row;
convertView.setTag(holder);
}else{
holder = (ViewHolder)convertView.getTag();
}
holder.itemToggle.setTag(position);
holder.itemToggle.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton togButton, boolean isChecked) {
if(isChecked && position != selection){
selection = position;
notifyDataSetChnaged();
}else if(!isChecked && position == selection){
selection = -1
}
}
});
holder.itemToggle.setChecked(position == selection);
holder.itemTitle.setText(sSettingTitles.get(position));
holder.itemDesc.setText(sSettingDesc.get(position));
return convertView;
You don't need to create views each and every time since ListView re uses the view. Follow the code as I suggested and let me know it is working or not.