List<Map<String,Object>> mapList = new ArrayList<Map<String,Object>>(); HashMap<String,Object> map1 = new HashMap<String, Object>(); map1.put("title", "程序员"); mapList.add(map1); HashMap<String,Object> map2 = new HashMap<String, Object>(); map2.put("title", "会计"); mapList.add(map2); SimpleAdapter adapter = new SimpleAdapter(this,mapList,android.R.layout.simple_list_item_multiple_choice, new String[]{"title"},new int[]{android.R.id.text1}); setListAdapter(adapter); getListView().setChoiceMode(ListView.CHOICE_MODE_MULTIPLE); //getListView().getCheckedItemPositions() 可以获取选取的位置
如果需要自定义布局,则实现复选需要处理点击List中的Item事件,一般采用一个map记录当前位置项的选中状态在adapter中的getView方法设置CheckedTextView的选中状态。
private HashMap<Integer,Boolean> checkedMap; public void onCreate(Bundle savedInstanceState) { setListAdapter(new MyAdapter(mapList)); getListView().setChoiceMode(ListView.CHOICE_MODE_MULTIPLE); getListView().setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> adapterview, View view, int i, long l) { // TODO Auto-generated method stub boolean checked = getListView().isItemChecked(i); checkedMap.put(i,checked); } }); } private class MyAdapter extends BaseAdapter{ @Override public View getView(int position, View convertView, ViewGroup parent) { CheckedTextView contactName = (CheckedTextView)convertView.findViewById(R.id.text1); if (checkedMap.get(position)!=null && checkedMap.get(position)==true) { contactName.setChecked(true); } else{ contactName.setChecked(false); } return convertView; }