listview中checkbox多选单选删除

大家应该都在淘宝买过东西吧,购物车里面有个功能,就是点击编辑之后可以选择多个商品结算或者删除。最近也正好用到这个功能,一开始也不会写,到处找,找到一个比较好的,在此记录下来。

1.其实最重要的就是adapter了,下面来看一下adapter。

public class InformationListAdapter extends BaseAdapter {
    private List<InformationResp.ResultMsgBean.DataBean> mList;//数据列表
    private List<InformationResp.ResultMsgBean.DataBean> selectList;//选中的item列表
    private LayoutInflater inflater = null;
    private InformationActivity activity;


    public InformationListAdapter(InformationActivity activity) {
        inflater = LayoutInflater.from(activity);
        this.activity=activity;
    }


    /**
     * 拿到数据
     *
     * @param list
     */
    public void setList(List<InformationResp.ResultMsgBean.DataBean> list) {
        this.mList = list;
        notifyDataSetChanged();
    }


    @Override
    public int getCount() {
        return mList == null ? 0 : mList.size();
    }

    @Override
    public Object getItem(int i) {
        return mList.get(i);
    }

    @Override
    public long getItemId(int i) {
        return i;
    }

    @Override
    public View getView(final int position, View convertView, ViewGroup viewGroup) {
        ViewHolder holder = null;
        if (convertView == null) {
            convertView = inflater.inflate(R.layout.item_list_information, null);
            holder = new ViewHolder();
            holder.time = (TextView) convertView.findViewById(R.id.tv_time);
            holder.content = (TextView) convertView.findViewById(R.id.tv_content);
            holder.line1 = (View) convertView.findViewById(R.id.line1);
            holder.line2 = (View) convertView.findViewById(R.id.line2);
            holder.checkBox = (CheckBox) convertView.findViewById(R.id.check_box);
            convertView.setTag(holder);
        } else {
            holder = (ViewHolder) convertView.getTag();
        }
        InformationResp.ResultMsgBean.DataBean bean = (InformationResp.ResultMsgBean.DataBean) getItem(position);
        holder.content.setText(bean.getMessageText());
        //主要的就在这里
        if (getSelectedData().contains(bean)) {
            holder.checkBox.setChecked(true);
        } else {
            holder.checkBox.setChecked(false);
        }
        holder.checkBox.setTag(position);
        holder.checkBox.setOnClickListener(onCheckChange);
        return convertView;
    }

    class ViewHolder {
        TextView content;//内容
        TextView time;//时间
        // TextView delete;
        View line1;
        View line2;
        CheckBox checkBox;
    }
    //checkBox点击
    View.OnClickListener onCheckChange=new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            InformationResp.ResultMsgBean.DataBean item = (InformationResp.ResultMsgBean.DataBean)
                    getItem(Integer.parseInt(v.getTag().toString()));
            if (getSelectedData().contains(item)) {
                getSelectedData().remove(item);
            } else {
                getSelectedData().add(item);
            }
        }
    };

    public List<InformationResp.ResultMsgBean.DataBean> getSelectedData() {
        if (selectList == null) {
            selectList = new ArrayList<>();
        }
        return selectList;
    }
}

2.这是activity,由于代码不能公开,只粘贴主要的部分。

private List<InformationResp.ResultMsgBean.DataBean> mList;

 //全选点击;allSelect是个全选的checkbox
        allSelect.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                if (allSelect.isChecked()) {
                    mAdapter.getSelectedData().clear();
                    mAdapter.getSelectedData().addAll(getList());
                } else {
                    mAdapter.getSelectedData().clear();
                }
                mAdapter.notifyDataSetChanged();
            }
        });
        //删除点击。deleteBtn是Button
        deleteBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                if (mAdapter.getSelectedData().size() > 0) {
                                //在这里可以删除选中的item    
                              
                               getList().removeAll(mAdapter.getSelectedData());
                } else {
                    toast("你还没有选中要删除的信息!");
                }
            }
        });
  /**
     * 得到list
     *
     * @return
     */
    public List<InformationResp.ResultMsgBean.DataBean> getList() {
        if (mList == null) {
            mList = new ArrayList<>();
        }
        return mList;
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值