listview+checkbox实现单选

来源:互联网 发布:学生空间七天网络答案 编辑:程序博客网 时间:2024/05/30 07:14
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;    }
0 0
原创粉丝点击