for (int i=0;i<20;i++){
list.add("这是item条目"+i);
}
adapter = new MyAdapter(MainActivity.this,list,cb);
lv.setAdapter(adapter);
//设置全选
cb.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
boolean flag = cb.isChecked();
for (int i = 0; i < adapter.getSelect().size(); i++) {
adapter.getSelect().set(i, flag);
}
adapter.notifyDataSetChanged();
}
});
//反选
btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if (! adapter.getSelect().contains(true)) {
Toast.makeText(MainActivity.this, "qingxuanz", 0).show();
}else {
for (int i = 0; i < adapter.getSelect().size(); i++) {
if (adapter.getSelect().get(i)) {
adapter.getSelect().set(i, false);
}else {
adapter.getSelect().set(i, true);
}
}
if (adapter.getSelect().contains(false)) {
cb.setChecked(false);
}
adapter.notifyDataSetChanged();
}
}
});
//适配器
LinkedList<Boolean> linkedList=new LinkedList<Boolean>();
public MyAdapter(Context context, List<String> list, CheckBox allBox) {
super();
this.context = context;
this.list = list;
this.allBox = allBox;
for (int i=0;i<list.size();i++){
linkedList.add(false);
}
}
//对外提供一个方法 获取这个集合
public List<Boolean> getSelect() {
return linkedList;
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return list.size();
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return list.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) {
// TODO Auto-generated method stub
if (convertView==null){
convertView=View.inflate(context, R.layout.list_item, null);
}
TextView list_item_tv=(TextView) convertView.findViewById(R.id.list_item_tv);
CheckBox list_item_cb=(CheckBox) convertView.findViewById(R.id.list_item_cb);
list_item_tv.setText(list.get(position));
list_item_cb.setChecked(linkedList.get(position));
//对checkBox点击进行监听
list_item_cb.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
//点中的时候改成相反的值
linkedList.set(position, ! linkedList.get(position));
//点击的同时还要去判断全选
if (linkedList.contains(false)) {
allBox.setChecked(false);
}else {
allBox.setChecked(true);
}
notifyDataSetChanged();
}
});
return convertView;
}