Whenever I unchecked any one check box button then last one also being unchecked so I am confuse to understand that what is main issue. I think it is being recycled.
private ArrayList<MusterRollAttendanceMaster> list;
private LayoutInflater inflator;
private ViewHolder holder = null;;
public MusterGridAdapter(Activity context,
ArrayList<MusterRollAttendanceMaster> list) {
super(context, R.layout.row, list);
this.list = list;
inflator = context.getLayoutInflater();
}
@SuppressLint("ViewTag")
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
convertView = inflator.inflate(R.layout.row, null);
holder = new ViewHolder();
} else {
holder = (ViewHolder) convertView.getTag();
}
holder.chk = (CheckBox) convertView.findViewById(R.id.checkbox);
holder.chk.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
int count = list.size();
boolean isAllChecked = true;
for (int i = 0; i < count; i++)
if (!(list.get(i).getSelected())) {
isAllChecked = false;
}
holder.chk.setChecked(isAllChecked);
}
});
holder.chk
.setOnCheckedChangeListener(new OnCheckedChangeListener() {
public void onCheckedChanged(CompoundButton view,
boolean arg1) {
int getPosition = (Integer) view.getTag();
list.get(getPosition).setSelected(view.isChecked());
for (int i = 0; i < list.size(); i++) {
if (!list.get(i).getSelected())
checkBox_header.setChecked(false);
}
int p = 0;
for (int i = 0; i < list.size(); i++) {
if (list.get(i).getSelected())
p++;
}
if (p == list.size())
checkBox_header.setChecked(true);
}
});
convertView.setTag(holder);
convertView.setTag(R.id.checkbox, holder.chk);
String part2;
holder.chk.setTag(position);
holder.jcn.setText(part2);
holder.chk.setChecked(list.get(position).isSelected());
return convertView;
}
public class ViewHolder {
private TextView jcn;
private TextView applicant;
private CheckBox chk;
}
public int getCount() {
count = list.size();
return count;
}
}