安卓ListView中CheckBox的使用(支持Item列表项的删除,全选,全不选)
成都创新互联公司是一家专注于成都网站设计、网站制作、外贸营销网站建设与策划设计,肃南裕固族自治网站建设哪家好?成都创新互联公司做网站,专注于网站建设10多年,网设计领域的专业建站公司;建站业务涵盖:肃南裕固族自治等地区。肃南裕固族自治做网站价格咨询:028-86922220
public class ListViewCheckBoxActivity extends ListActivity { private static final String TAG = "ListViewCheckBoxActivity"; private List- itemList; private DraftDailyAdapter adapter; private Map
isCheckedMap; private CheckBox allCheckBox; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); allCheckBox = (CheckBox)findViewById(R.id.all_check_btn); itemList = new ArrayList - (); isCheckedMap = new HashMap
(); //初始化数据 for(int i=0;i<8;i++){ Item item = new Item(); item.id=i; item.name = "第"+i+"篇日报"; itemList.add(item); isCheckedMap.put(i,false); } adapter = new DraftDailyAdapter(this,itemList); setListAdapter(adapter); allCheckBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener(){ @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { Set set = isCheckedMap.keySet(); Iterator iterator = set.iterator(); if(isChecked){ while(iterator.hasNext()){ Integer keyId = iterator.next(); isCheckedMap.put(keyId,true); } }else{ while(iterator.hasNext()){ Integer keyId = iterator.next(); isCheckedMap.put(keyId,false); } } adapter.notifyDataSetChanged(); } }); } class DraftDailyAdapter extends BaseAdapter { public List - list; private Context context; LayoutInflater inflater; public DraftDailyAdapter(Context context, List
- list) { super(); this.list = list; this.context = context; inflater = LayoutInflater.from(this.context); } @Override public int getCount() { return list == null ? 0 : list.size(); } @Override public Object getItem(int location) { return list.get(location); } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder holder = null; Item item = list.get(position); //Item的位置 final int listPosition = position; //这个记录item的id用于操作isCheckedMap来更新CheckBox的状态 final int id = item.id; if(convertView == null){ holder = new ViewHolder(); convertView = inflater.inflate(R.layout.item, null); holder.tvName = (TextView)convertView.findViewById(R.id.dailyName); holder.deleteButton = (ImageButton)convertView.findViewById(R.id.deleteAttachment); holder.cBox = (CheckBox)convertView.findViewById(R.id.isCheakBox); convertView.setTag(holder); }else{ holder = (ViewHolder) convertView.getTag(); } Log.d(TAG, "id="+id); holder.cBox.setChecked(isCheckedMap.get(id)); holder.tvName.setText(item.name); holder.deleteButton.setOnClickListener(new OnClickListener() { @Override public void onClick(View paramView) { //Log.d(TAG, "deletePosition="+listPosition+""); //删除list中的数据 list.remove(listPosition); //删除Map中对应选中状态数据 isCheckedMap.remove(id); //通知列表数据修改 adapter.notifyDataSetChanged(); } }); holder.cBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener(){ @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { if(isChecked){ isCheckedMap.put(id,true); }else{ isCheckedMap.put(id,false); } } }); return convertView; } public final class ViewHolder { public TextView tvName; public ImageButton deleteButton; public CheckBox cBox; } } class Item { private Integer id; private String name; } }
文章题目:安卓ListView中CheckBox的使用(支持Item列表项的删除,全选,全不选)
文章起源:http://hbruida.cn/article/giicpp.html