大致代码,你主要看思路吧
//全选
btn_selectAll.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View arg0) {
listStr = new ArrayList<String>();
for(int i=0;i<list.size();i++){
MyAdapter.isSelected.put(i,true);
listStr.add(name<i>);
}
adapter.notifyDataSetChanged();//注意这一句必须加上,否则checkbox无法正常更新状态
tv.setText("已选中"+listStr.size()+"项");
}
});
//反选
btn_inverseSelect.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v) {
for(int i=0;i<list.size();i++){
if(MyAdapter.isSelected.get(i)==false){
MyAdapter.isSelected.put(i, true);
listStr.add(name<i>);
}
else{
MyAdapter.isSelected.put(i, false);
listStr.remove(name<i>);
}
}
adapter.notifyDataSetChanged();
tv.setText("已选中"+listStr.size()+"项");
}
});
//取消已选
btn_calcel.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v) {
for(int i=0;i<list.size();i++){
if(MyAdapter.isSelected.get(i)==true){
MyAdapter.isSelected.put(i, false);
listStr.remove(name<i>);
}
}
adapter.notifyDataSetChanged();
tv.setText("已选中"+listStr.size()+"项");
}
});
}
// 显示带有checkbox的listview
public void showCheckBoxListView() {
list = new ArrayList<HashMap<String, Object>>();
for (int i = 0; i < name.length; i++) {
HashMap<String, Object> map = new HashMap<String, Object>();
map.put("item_tv", name<i>);
map.put("item_cb", false);
list.add(map);
adapter = new MyAdapter(this, list, R.layout.listviewitem,
new String[] { "item_tv", "item_cb" }, new int[] {
R.id.item_tv, R.id.item_cb });
lv.setAdapter(adapter);
listStr = new ArrayList<String>();
lv.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View view, int position, long arg3) {
ViewHolder holder = (ViewHolder) view.getTag();
holder.cb.toggle();// 在每次获取点击的item时改变checkbox的状态
MyAdapter.isSelected.put(position, holder.cb.isChecked()); // 同时修改map的值保存状态
if (holder.cb.isChecked() == true) {
listStr.add(name[position]);
} else {
listStr.remove(name[position]);
}
tv.setText("已选中"+listStr.size()+"项");
}
});
}
}