listview+checkbox实现单选

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
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值