<span style="color:#57697d;">class MyBaseAdapter extends BaseAdapter {
private List<String> mlist = new ArrayList<String>();
</span><span style="color:#ff0000;">List<Integer> checkPosition = null;// checkbox选中的位置。</span><span style="color:#57697d;">
public MyBaseAdapter(List<String> list) {
mlist = list;
</span><span style="color:#ff0000;">checkPosition = new ArrayList<Integer>();
checkPositionor = new ArrayList<Boolean>();
for (int i = 0; i < mlist.size(); i++) {
checkPositionor.add(false);
}</span><span style="color:#57697d;">
}
public List<Boolean> getCheckBoxesStatus() {
return checkPositionor;
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return mlist.size();
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return mlist.get(position);
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
Boolean checkBoxStatus = checkPositionor.get(position);
ViewHolder viewHolder = null;
if (convertView == null) {
viewHolder = new ViewHolder();
convertView = LayoutInflater.from(context).inflate(R.layout.listiviewdelete_item3, null);
viewHolder.listviewdelete_item_text3 = (TextView) convertView.findViewById(R.id.listviewdelete_item_text3);
viewHolder.listviewdelete_item_checkbox3 = (CheckBox) convertView.findViewById(R.id.listviewdelete_item_checkbox3);
convertView.setTag(viewHolder);
</span><span style="color:#ff0000;">viewHolder.listviewdelete_item_checkbox3.setTag(new Integer(position));// 做标记</span><span style="color:#57697d;">
} else {
viewHolder = (ViewHolder) convertView.getTag();
}
</span><span style="color:#ff0000;">viewHolder.listviewdelete_item_checkbox3.setId(position);
viewHolder.listviewdelete_item_checkbox3.setChecked(checkBoxStatus);</span><span style="color:#57697d;">
viewHolder.listviewdelete_item_checkbox3.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
// if (buttonView.getId() == Integer.parseInt((Integer)
// finalholder.getTag() + "")) {
// System.out.println("hahhahahahhaahahh");
if (isChecked) {
ischeckedsize = ischeckedsize + 1;
System.out.println("选择了-1--ischeckedsize==" + ischeckedsize);
// mHandler.obtainMessage(UPDATEISCHECKEDSIZE).sendToTarget();
} else {
ischeckedsize = ischeckedsize - 1;
System.out.println("没选择-2--ischeckedsize==" + ischeckedsize);
}
System.out.println("-3--ischeckedsize==" + ischeckedsize);
mHandler.obtainMessage(UPDATEISCHECKEDSIZE, ischeckedsize).sendToTarget();
checkPositionor.set(buttonView.getId(), isChecked);
notifyDataSetChanged();
// }
}
});
return convertView;
}
}
final static class ViewHolder {
TextView listviewdelete_item_text3;
Button listviewdelete_item_BT_delete3;
CheckBox listviewdelete_item_checkbox3;
}</span>
checkPositionor.add(false);
}
只需要 在初始化CheckBox状态和设置状态变化监听事件之前,先把状态变化监听事件设置为null。//在初始化CheckBox状态和设置状态变化监听事件之前,先把状态变化监听事件设置为null viewHolder.listviewdelete_item_checkbox3.setOnCheckedChangeListener(null); viewHolder.listviewdelete_item_checkbox3.setId(position); viewHolder.listviewdelete_item_checkbox3.setChecked(checkBoxStatus); viewHolder.listviewdelete_item_checkbox3.setOnCheckedChangeListener(new OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { // if (buttonView.getId() == Integer.parseInt((Integer) // finalholder.getTag() + "")) { // System.out.println("hahhahahahhaahahh"); if (isChecked) { ischeckedsize = ischeckedsize + 1; System.out.println("选择了-1--ischeckedsize==" + ischeckedsize); // mHandler.obtainMessage(UPDATEISCHECKEDSIZE).sendToTarget(); } else { ischeckedsize = ischeckedsize - 1; System.out.println("没选择-2--ischeckedsize==" + ischeckedsize); } System.out.println("-3--ischeckedsize==" + ischeckedsize); mHandler.obtainMessage(UPDATEISCHECKEDSIZE, ischeckedsize).sendToTarget(); checkPositionor.set(buttonView.getId(), isChecked); notifyDataSetChanged(); // } } });