单选,反选,全选

本文介绍了一种在列表视图中实现选择功能的方法,包括单选、全选及反选操作。通过维护一个哈希映射来跟踪每个项目的选中状态,并在选择状态改变时更新UI。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

private List<String> list;
private final HashMap<Integer, Boolean> ischeck;


public Mybase() {
    ischeck = new HashMap<>();
    list = new ArrayList<>();
    for (int i = 0; i < 30; i++) {
        list.add("数量" + i);
        ischeck.put(i, false);
    }


//错乱问题解决 以及单选的调用
        holder.item_img.setImageResource(R.drawable.wx);
        holder.item_checkbox.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
//                ischeck.put(position, !ischeck.get(position));
//                notifyDataSetChanged();
                dogxuan(position);
            }
        });
        holder.item_checkbox.setChecked(ischeck.get(position));
    }

    //全选
    public void selectall() {
        Set<Map.Entry<Integer, Boolean>> entries = ischeck.entrySet();
        boolean nocheckall = false;
        for (Map.Entry<Integer, Boolean> entry : entries) {
            Boolean value = entry.getValue();
            if (!value) {
                nocheckall = true;
                break;
            }
        }
        for (Map.Entry<Integer, Boolean> entry : entries) {
            entry.setValue(nocheckall);
        }
        notifyDataSetChanged();
    }

    //反选
    public void noxuan() {
        Set<Map.Entry<Integer, Boolean>> entries = ischeck.entrySet();
        for (Map.Entry<Integer, Boolean> entry : entries) {
            entry.setValue(!entry.getValue());
        }
        notifyDataSetChanged();
    }

    //单选
    public void dogxuan(int position) {
        Set<Map.Entry<Integer, Boolean>> entries = ischeck.entrySet();
        for (Map.Entry<Integer, Boolean> entry : entries) {
            entry.setValue(false);
        }
        ischeck.put(position, true);
        notifyDataSetChanged();
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值