checkBox多选时,重写hasCode()方法和equal()方法对实体类的增加和移除

以前我们的需求是:当我们对实体类选中checkBox时,加入list里执行add()方法,取消时,则在list移除,执行remove()方法,它们操作的是同一个实体对象。
现在我们的需求是:我们选中checkBox时,取它的部分属性加入另外的实体对象,没选中则移除。

一、在adapter里定义接口,在activity里实现接口setItemSelect();

private Set<OrderDestBean> selectList=new HashSet();

@Override
    public void setItemSelect(ShopcarBean shopCar) {
        OrderDestBean bean = new OrderDestBean();
        bean.setAmount(shopCar.getCash());
        bean.setNum(shopCar.getNum());
        if (shopCar.isSelect()) {
            selectList.add(bean);
            cashId.add(shopCar.getId());
            accountAll += Integer.parseInt(bean.getAmount());
        } else {
            accountAll -= Integer.parseInt(bean.getAmount());
            selectList.remove(bean);
            cashId.remove(shopCar.getId());
        }

    }

这样,我们移除OrderDestBean时,会移除不掉,而且会增加相同的元素,因为我们每次都重新new了一个OrderDestBean对象,他们操作的不是同一个对象,按照之前的想法,我会想到遍历list了,现在有了一种新的思路,新的方法可以实现,那就是重写OrderDestBean 的equal()、hasCode()方法。

@Override
    public int hashCode() {
        //      return 12345;
        final int prime = 31;
        int result = 1;
        result = prime * result + ((this.num == null) ? 0 : this.num.hashCode());
        return result;

    }

    @Override
    public boolean equals(Object o) {
        if(o.getClass()!=OrderDestBean.class){
        return false;
        }
        OrderDestBean obj=(OrderDestBean)o;
        if(this.num.equal(obj.getNum())){
        return true;
        }
        retrurn false;
    }

这样就完美的解决了上面所说的问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值