1、listview的设置:
<ListView android:id="@+id/lvi_sel_approvalperson" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="10dp" android:cacheColorHint="#00000000" android:clickable="true" android:descendantFocusability="blocksDescendants" android:divider="#e0e0e0" android:dividerHeight="0.5dp" android:fadingEdge="none" android:fastScrollEnabled="true" android:scrollbars="none" android:scrollingCache="false" />
2、子view的CheckBox设置
<CheckBox android:id="@+id/che_type" style="@style/sel_approval" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_alignParentTop="true" android:layout_centerVertical="true" android:clickable="false" android:focusable="false" android:focusableInTouchMode="false" />3、代码中实现
private List<QueryPersonCardListData> mList = new ArrayList<QueryPersonCardListData>(); private SelApprovalPersonAdapter mAdapter; private Map<Integer, Boolean> isSelected; private List beSelectedData = new ArrayList();for (QueryPersonCardListData arr : bean.getData()) { mList.add(arr); } initList();private void initList() { if (mList == null || mList.size() == 0) return; if (isSelected != null) isSelected = null; isSelected = new HashMap<Integer, Boolean>(); for (int i = 0; i < mList.size(); i++) { isSelected.put(i, false); } // 清除已经选择的项 if (beSelectedData.size() > 0) { beSelectedData.clear(); } mAdapter = new SelApprovalPersonAdapter(this, mList); mLviAelApprovalperson.setAdapter(mAdapter); mLviAelApprovalperson.setChoiceMode(ListView.CHOICE_MODE_SINGLE); mAdapter.notifyDataSetChanged();}public class SelApprovalPersonAdapter extends BaseAdapter { Context cxt; private List<QueryPersonCardListData> mList; private LayoutInflater mInflater; //private View.OnClickListener mOnItemClick; public SelApprovalPersonAdapter(Context context, List<QueryPersonCardListData> list) { cxt = context; mInflater = (LayoutInflater) context .getSystemService(Context.LAYOUT_INFLATER_SERVICE); mList = list; if (list == null) { mList = new ArrayList<QueryPersonCardListData>(); } // listview条目点击 // mOnItemClick = new View.OnClickListener() { // // @Override // public void onClick(View v) { // ViewHolder item = (ViewHolder) v.getTag(); // } // }; } @Override public int getCount() { return mList.size(); } @Override public Object getItem(int arg0) { return mList.get(arg0); } public void clear() { mList.clear(); } public void setList(List<QueryPersonCardListData> list) { this.mList = list; } public void addAll(List<QueryPersonCardListData> list) { mList.addAll(list); } @Override public long getItemId(int position) { return position; } @Override public View getView(int position1, View convertView, ViewGroup parent) { final int position = position1; ViewHolder holder = null; if (convertView == null) { convertView = mInflater.inflate(R.layout.view_sel_approval_person, null); holder = new ViewHolder(); holder.che_type = (CheckBox) convertView .findViewById(R.id.che_type); holder.img_photo = (ImageView) convertView .findViewById(R.id.img_photo); holder.tv_phone = (TextView) convertView .findViewById(R.id.tv_phone); holder.tv_name = (TextView) convertView .findViewById(R.id.tv_name); holder.tv_part = (TextView) convertView .findViewById(R.id.tv_part); convertView.setTag(holder); } else { holder = (ViewHolder) convertView.getTag(); } //convertView.setOnClickListener(mOnItemClick); QueryPersonCardListData arr = (QueryPersonCardListData) getItem(position); holder.arr = arr; loader.displayImage(ApiUtil.url() + arr.getPhoto_path(), holder.img_photo, options); holder.tv_phone.setText(arr.getMobile()); holder.tv_name.setText(arr.getName()); holder.tv_part.setText(arr.getDept_name()); holder.che_type.setChecked(isSelected.get(position)); holder.che_type.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { // 当前点击的CB boolean cu = !isSelected.get(position); // 先将所有的置为FALSE for (Integer p : isSelected.keySet()) { isSelected.put(p, false); } // 再将当前选择CB的实际状态 isSelected.put(position, cu); SelApprovalPersonAdapter.this.notifyDataSetChanged(); beSelectedData.clear(); if (cu) { beSelectedData.add(mList.get(position)); mSelPersonId = mList.get(position).getPerson_id(); mSelPersonName = mList.get(position).getName(); } } }); return convertView; } } class ViewHolder { CheckBox che_type; ImageView img_photo; TextView tv_name; TextView tv_phone; TextView tv_part; QueryPersonCardListData arr; }