通过下标全选反选,删除

Vue中表单控件(实现多选/反选、删除、单选功能) Vue中表单控件(实现多选/反选、删除、单选功能) <html lang="en"> <head> <meta charset="UTF-8"> <title>全选/反选</title> <style> /*v-cloak:解决加载闪烁时出现的Vue标签或者指令(一般出现在cdn引... 阅读详情
//主类
package com.example.choose;

import java.util.ArrayList;
import java.util.List;
import com.example.adapter.MyChooseAdapter;
import com.example.adapter.MyChooseAdapter.ViewHolder;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.Button;
import android.widget.ListView;
import android.widget.TextView;

public class MainActivity extends Activity {

        private ListView lv; 
        private MyChooseAdapter mAdapter; 
        private ArrayList<String> list; 
        private Button bt_selectall; 
        private Button bt_cancel; 
        private Button bt_deselectall; 
        private Button deleteitem;
        private int checkNum; // 记录选中的条目数量 
        private TextView tv_show;// 用于显示选中的条目数量 
        private List<String> data;//定义一个集合   保存选中的条目
        private TextView add;//勾选商品的总会
        private int allnumber=0;
        private boolean flag=true;

        @Override 
        public void onCreate(Bundle savedInstanceState) { 
            super.onCreate(savedInstanceState); 
            setContentView(R.layout.activity_main); 
            lv = (ListView) findViewById(R.id.lv); 
            bt_selectall = (Button) findViewById(R.id.bt_selectall); 
            bt_cancel = (Button) findViewById(R.id.bt_cancleselectall); 
            bt_deselectall = (Button) findViewById(R.id.bt_deselectall); 
            deleteitem=(Button) findViewById(R.id.deleteItem);
            tv_show = (TextView) findViewById(R.id.tv); 
            add=(TextView) findViewById(R.id.add);
            list = new ArrayList<String>(); 
            // 为Adapter准备数据 
            initDate(); 
            // 实例化自定义的MyAdapter 
            mAdapter = new MyChooseAdapter(list, this); 
            // 绑定Adapter 
            lv.setAdapter(mAdapter); 

            // 全选按钮的回调接口 
            bt_selectall.setOnClickListener(new OnClickListener() { 
                @Override 
                public void onClick(View v) { 
                    // 遍历list的长度,将MyAdapter中的map值全部设为true 
                    for (int i = 0; i < list.size(); i++) {
                        if (MyChooseAdapter.getIsSelected().get(i)==false) {
                            MyChooseAdapter.getIsSelected().put(i, true);
                            if (flag) {
                                 allnumber+=Integer.valueOf(list.get(i));
                            }
                        }
                    } 
                    flag=false;
                    // 数量设为list的长度 
                    checkNum = list.size(); 
                    // 刷新listview和TextView的显示 
                    dataChanged(); 
                } 
            }); 

            // 反选按钮的回调接口 
            bt_cancel.setOnClickListener(new OnClickListener() { 
                @Override 
                public void onClick(View v) { 
                    // 遍历list的长度,将已选的设为未选,未选的设为已选 
                    for (int i = 0; i < list.size(); i++) { 
                        if (MyChooseAdapter.getIsSelected().get(i)) { 
                            MyChooseAdapter.getIsSelected().put(i, false); 
                            checkNum--; 
                            allnumber-=Integer.valueOf(list.get(i));
                        } else { 
                            MyChooseAdapter.getIsSelected().put(i, true); 
                            checkNum++; 
                            allnumber+=Integer.valueOf(list.get(i));
                        } 
                    } 
                    flag=true;
                    // 刷新listview和TextView的显示 
                    dataChanged(); 
                } 
            }); 

            //取消按钮的回调接口 
            bt_deselectall.setOnClickListener(new OnClickListener(){ 
                @Override 
                public void onClick(View v) { 
                    // 遍历list的长度,将已选的按钮设为未选 
                    for (int i = 0; i < list.size(); i++) { 
                        if (MyChooseAdapter.getIsSelected().get(i)) { 
                            MyChooseAdapter.getIsSelected().put(i, false); 
                            checkNum--;// 数量减1 
                            allnumber-=Integer.valueOf(list.get(i));
                        } 
                    } 
                    flag=true;
                    // 刷新listview和TextView的显示 
                    dataChanged(); 
                } 
            }); 
            //删除按钮的回调方法
            deleteitem.setOnClickListener(new OnClickListener() {

                @Override
                public void onClick(View v) {
                    //遍历list集合  将勾选的在集合中删除
                    data=new ArrayList<String>();
                    for (int i = 0; i < list.size(); i++) {
                        if (MyChooseAdapter.getIsSelected().get(i)) {
                            data.add(list.get(i));
                            MyChooseAdapter.getIsSelected().put(i, false);
                            checkNum--;
                            allnumber-=Integer.valueOf(list.get(i));
                        }
                    }
                    list.removeAll(data);
                    dataChanged();
                }
            });

            // 绑定listView的监听器 
            lv.setOnItemClickListener(new OnItemClickListener() { 
                @Override 
                public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, 
                        long arg3) { 
                    // 取得ViewHolder对象,这样就省去了通过层层的findViewById去实例化我们需要的cb实例的步骤 
                    ViewHolder holder = (ViewHolder) arg1.getTag(); 
                    // 改变CheckBox的状态 
                    holder.cb.toggle(); 
                    // 将CheckBox的选中状况记录下来 
                    MyChooseAdapter.getIsSelected().put(arg2, holder.cb.isChecked()); 
                    // 调整选定条目 
                    if (holder.cb.isChecked() == true) { 
                        checkNum++; 
                        allnumber+=Integer.valueOf(list.get(arg2));![这里写图片描述](http://img.blog.youkuaiyun.com/20160416084318565)
                    } else { 
                        checkNum--; 
                        allnumber-=Integer.valueOf(list.get(arg2));
                    } 
                    dataChanged();
                } 
            }); 
        } 


        // 初始化数据 
        private void initDate() { 
            for (int i = 0; i < 50; i++) { 
                list.add(i+"");
            } 

        } 
        // 刷新listview和TextView的显示 
        private void dataChanged() { 
            // 通知listView刷新 
            mAdapter.notifyDataSetChanged(); 
            // TextView显示最新的选中数目 
            tv_show.setText("已选中" + checkNum + "项"); 
            add.setText("勾选的商品的总和是"+allnumber);
        }; 
}
//适配器类
package com.example.adapter;

import java.util.ArrayList;
import java.util.HashMap;

import com.example.choose.R;

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.CheckBox;
import android.widget.TextView;

public class MyChooseAdapter extends BaseAdapter{    
    // 填充数据的list 
    private ArrayList<String> list; 
    // 用来控制CheckBox的选中状况 
    private static HashMap<Integer, Boolean> isSelected; 
    // 上下文 
    private Context context; 
    // 用来导入布局 
    private LayoutInflater inflater = null; 
    //构造器
    public MyChooseAdapter(ArrayList<String> list, Context context) {
        super();
        this.list = list;
        this.context = context;
        inflater = LayoutInflater.from(context); 
        isSelected = new HashMap<Integer, Boolean>(); 
        // 初始化数据 
        initDate(); 
    }


    // 初始化isSelected的数据 
    private void initDate() { 
        for (int i = 0; i < list.size(); i++) { 
            getIsSelected().put(i, false); 
        } 
    } 

    @Override 
    public int getCount() { 
        return list.size(); 
    } 

    @Override 
    public Object getItem(int position) { 
        return list.get(position); 
    } 

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

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
        ViewHolder holder = null; 
        if (convertView == null) { 
            // 获得ViewHolder对象 
            holder = new ViewHolder(); 
            // 导入布局并赋值给convertview 
            convertView = inflater.inflate(R.layout.choose_item, null); 
            holder.tv = (TextView) convertView.findViewById(R.id.item_tv); 
            holder.cb = (CheckBox) convertView.findViewById(R.id.item_cb); 
            // 为view设置标签 
            convertView.setTag(holder); 
        } else { 
            // 取出holder 
            holder = (ViewHolder) convertView.getTag(); 
        } 
        // 设置list中TextView的显示 
        holder.tv.setText(list.get(position)); 
        // 根据isSelected来设置checkbox的选中状况 
        holder.cb.setChecked(getIsSelected().get(position)); 
        return convertView; 
    } 

    public static HashMap<Integer, Boolean> getIsSelected() { 
        return isSelected; 
    } 

    public static void setIsSelected(HashMap<Integer, Boolean> isSelected) { 
        MyChooseAdapter.isSelected = isSelected; 
    } 

    public static class ViewHolder { 
        TextView tv; 
        public CheckBox cb; 
     } 
   }

这里写图片描述

大疆Livox Mid-70雷达的使用 一、前期准备 (一)、使用Livox Viewer测试雷达 1、设置静态IP sudo ifconfig enx081f7152092a 192.168.1.50 查看IP是否设置成功 lacyexsale@lacyexsale-KLV-WX9:~$ ifconfig enx081f7152092a Link encap:以太网 硬件地址 08:1f:71:52:09:2a inet 地址:192.168.1.50 广播:192.168.1.255 掩码:255.255.25 阅读详情

相关推荐

Android手机本地语音转文字实战:用FunASR+ONNX Runtime打造离线ASR应用(附模型下载)

本文详细介绍了如何在Android应用中集成FunASR和ONNX Runtime,构建高性能的离线语音识别系统。通过模型选择、工程化集成和性能调优等实战技巧,开发者可以实现本地语音转文字功能,有效保护用户隐私并提升响应速度。

weixin_29046611的博客 266

使用RecyclerView在出现的问题

在使用RecyclerView在出现的问题:    Process: com.example.administrator.sgandroid, PID: 6123                                                                                    java.lang.IllegalStateExcepti

android_lyp的博客 1万+

CRMEB商城系统任意文件下载漏洞(CVE-2024-52726)分析与修复

在Web应用安全领域,API接口安全是保障系统边界安全的核心环节。其原理在于通过签名验证、参数校验等机制,确保请求的合法性与完整性。这项技术的价值在于为系统间数据交互提供安全通道,防止未授权访问和数据泄露。典型的应用场景包括电商系统的对外数据接口、第三方服务集成等。然而,当签名验证逻辑存在缺陷或文件路径处理不当,便会引发严重的安全风险。本文以CRMEB开源商城系统为例,深入剖析其对外API模块中因签名验证绕过和路径遍历导致的任意文件下载漏洞。该漏洞允许攻击者下载服务器敏感文件,如数据库配置文件、日志和源码,

weixin_27722377的博客 376

UI选中界面代码实现

今天继续和大家分享涉及到listview的内容。在很多时候,我们会用到 listview和checkbox配合来提供给用户一些选择操作。比如在一个清单页面,我们需要记录用户勾选了哪些条目。这个的实现并不太难,但是有很 多朋友来问我如何实现,他们有遇到各种各样的问题,这里就一并写出来和大家一起分享。   ListView的操作就一定会涉及到item和Adapter,我们还是先来实现这部分内容。

路遥知马力 1012

WSL2迁移后用户名不见了?一招教你快速恢复Ubuntu22.04默认用户

本文针对WSL2迁移后Ubuntu 22.04默认用户名丢失的常见问题,提供了详细的诊断与修复方案。通过分析迁移底层逻辑,指导用户使用`ubuntu2204.exe config --default-user`命令或配置`/etc/wsl.conf`文件快速恢复用户身份,并涵盖权限修复、冲突解决及自动化迁移脚本等进阶内容,确保子系统迁移后环境完整可用。

web39explorer的博客 558

SSL证书验证:VMware Horizon Client的安全隐患与临时解决方案

本文深入分析了VMware Horizon Client中SSL证书验证失败的安全隐患,提供了临时解决方案与长期防御策略。针对自签名证书、证书链断裂等常见问题,文章详细解析了风险成因,并给出分级响应方案,帮助企业平衡安全与效率。通过实战案例和自动化脚本,指导IT管理员构建主动防御体系,有效降低中间人攻击风险。

weixin_29290863的博客 337

利用Tag值获取所在行的数组下标。购物车中的移除功能,

利用Tag值获取所在行的数组下标。购物车中的移除功能, 1、给按钮加TAG值,900起加上section(因为本UITableView是分组的,所以用section,如果是平铺的就用row) cell.clearButton.tag=900+indexPath.section; 2、在按钮的点击事件中获取所属数组下标Btn.tag-900,作为参数调用CancelCartGood

shiningchen322的博客 857

交流异步机VVVF变频控制simulink/matlab仿真分析

VVVF,是Variable Voltage and Variable Frequency的缩写, 意为:可变电压、可变频率,也就是变频调速系统。 VVVF控制的逆变器连接电机,通过同时改变频率和电压,达到磁通恒定(可以用反电势/频率近似表征)和控制电机转速(和频率成正比)的目的,所以多应用在变频器中,属于工业自动化领域。

Ezekiel_Mok的博客 4209

反转数组、返回指定元素下标

一、反转数组 将数组中的元素按照排列顺序反转, 例如角标0和最后一个角标位上的元素交换 public static void reverse(int[] arr){ //数组中的元素前后交换, 遍历的次数只能是数组长度的一半 for (int i = 0; i < arr.length/2; i++) { int temp = arr[i]; arr[i] = arr[ar...

moxiaomo0804的博客 1676

使用 Simulink 进行电力电子系统的小信号模型仿真

电力电子系统(Power Electronics System)包括各种功率转换器(如 DC-DC 转换器、逆变器等)。这些设备中的关键组件(如 MOSFET、IGBT、电容器、电感器等)不仅影响系统的性能,还直接关系到系统的稳定性、效率和可靠性。因此,在设计阶段进行详细的建模和仿真至关重要。小信号模型仿真的目的是通过线性化非线性系统来评估其动态特性,包括增益、相位裕度、带宽等指标。通过本教程,我们介绍了如何使用 Simulink 进行电力电子系统的小信号模型仿真。背景介绍。

xiaoheshang_123的博客 480

MAC-H3C官网inode客户端下载安装

MAC-H3C官网inode客户端下载安装

兴趣是最好的老师 1万+

vue多选、全选和选中删除问题

<div id="vueContainer"> <div> <input type='checkbox' class='input-checkbox' :checked="fruitIds.length === fruits.length" @click='checkedAll()'>全选 <div v-for='(frui...

weixin_44760923的博客 3432

用一组可复现实验讲清 ABAP 内表 Standard / Sorted / Hashed 的性能差异

摘要(150字): SAP项目中性能问题常源于ABAP内表选型不当。标准表(STANDARD TABLE)写入快但查找慢(线性扫描),适合遍历场景;排序表(SORTED TABLE)保持有序,支持二分查找,适合范围查询;哈希表(HASHED TABLE)基于唯一键实现常数级查找,适合高频精确匹配。实验表明:标准表+BINARY SEARCH需预排序,成本可能高于直接使用排序表;哈希表在键匹配时性能最优。Gateway和RAP场景中,内表选型直接影响接口响应,建议根据读写负载(追加/遍历/精确查找)选择对应类

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 201

jQuery实现全选全不选单选校验,删除所选

看完思路,再看代码,清晰流畅

m0_51707539的博客 797

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

vue 实现checkbox的全选,单选以及删除

vue 实现checkbox的全选,单选以及删除 <template> <div> <input type='checkbox' class='input-checkbox' :checked="fruitIds.length === fruits.length" @click='checkedAll()'>全选 <div ...

攻城喵小猫的博客 1万+

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

移动端购物车全选反选

移动端购物车全选反选 使用的是uniapp开发小程序,其中使用了uniapp滑动操作组件 效果 代码 <template> <view class="cartList"> <view> <view class="cart_list_operation"> <view class="cart_operation_left">购物车共有 5 件商品</view> <view class="cart_ope

weixin_46181037的博客 509

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

全选---反选---删除---HTML

反选 批量删除 全选/全不选 名称 价格 数量 总价 操作 {{good.name}} {{good.price}} {{good.count}} {{good.price*good.count}} 删除 //页面加载时将"全选"的复选框设为未选中,为了刷新时重置 $(function() { docum

wanderer_ankey的博客 295

Vue 实现checkbox的全选,单选以及删除

https://www.cnblogs.com/smileself/p/checkAll.html <template> <div> <input type='checkbox' class='input-checkbox' :checked="fruitIds.length === fruits.length" @click='checkedAll()'>全选 <div v-for='(fruit, index) in fru.

林中明月间丶 2715

24选择排序 去重 堆和栈 对象 实现全选、全不选和反选

24选择排序 去重 堆和栈 对象 实现全选、全不选和反选 一、选择排序 将第一位依次与后面的元素相比较,得到最小值,与第一位交换。再用第二位依次与后面元素相比较,得到最小值,与第二位交换。 js代码实现 var arr = [1, 3, 5, 2, 8, 7] //用函数封装选择排序 function sorting(arr) { //遍历第i位数 for (var i = 0; i < arr.length - 1; i++) {

m0_49788155的博客 240

uniapp 多选框的全选功能实现

uniapp内置的checkbox其实以及checkbox-group本来挺好的,但是有两个问题: 无法依赖其事件实现全选 样式固定,难以修改 他们无法实现全选的原因是: 我动态修改checkbox的checked字段时,界面上的状态能够实时变化,但是无法触发checkbox-group的change事件。意味着无法依赖checkbox-group管理好已选项。 就是说:我点了全选,界面上看着是全选了。然后此时我取消了其中一个选项,此时触发change事件,但是它反馈给我的已选列表是错的。这是不行的。

lsjweiyi的博客 9646

vue 多选、全选和选中删除问题

&lt;div id="vueContainer"&gt; &lt;div&gt; &lt;input type='checkbox' class='input-checkbox' :checked="fruitIds.length === fruits.length" @click='checkedAll()'&gt;全选 &lt;div v-for='(fru...

weixin_39090097的博客 7596

Antd-table全选踩坑记录

andt-table 中选中第一项会影响到后面的每一页的第一项的解决方法,以及全选如何选中所有数据而不是当前数据。

qq_45799465的博客 4194

# **小白也能看懂JS添加,全选,所选删除**

小白也能看懂JS添加,全选,所选删除 通过javascript对表格进行按钮添加,全选/不全选,所选删除操作。超详细解答,小白一眼就懂 先看一下我的代码,在js代码里我会详细讲解每一行,结尾会总体讲解js的思路 <style> #box{ text-align: center; } #del{ position: absolute; right: 600px;

weixin_49604266的博客 241

layui数据表格批量删除(个人笔记)

实现思路 首先监听复选框,使用obj.tr返回当前行jquery节点对象,此行下有该节点的下标属性;判断复选框全选和多选: 当复选框多选,将点击后的复选框的jquery的节点对象push进array数组,反选则获取反选复选框代表的节点对象,取到该节点对象下标属性值,此时再与array中数组的每一项复选框行节点的下标属性值坐判断是否相等,如果相等则删除该节点对象,此时数组剩余的节点对象就是复选框选中...

clear-dream 3079

DataGrid 模板列中全选CheckBox 并在删除选中后给出选择删除提示

DataGrid 模板列中全选CheckBox 并在删除选中后给出选择删除提示function checkAll(){      var ckbD = document.getElementsByName(ckbDelete); // 模板列项的 htmlCheckBox ID     var checked = document.all.ckbAll.checked;     for(var

hqt的专栏 2322

购物车的实现分步骤思路

css样式写一个步进器,给加的按钮绑定一个点击事件,获取v-for循环时的index下标,然后在方法中定义点击事件,获取到当前点击的这条数据中的数量,并对数量进行减减的处理,然后进行判断,判断数量不小于一,如果小于一,则让数凉量等于一。循环,它有两个参数,total 和 item,在循环里判断,判断它的状态码为true,也就是判断它们是否为选中状态,如果是选中状态,total += item的数量 乘 item 的价格,返回计算方法,就可以获取到总价。循环所有的数据,利用。

m0_63135911的博客 2014
上一篇: 视频播放以及横竖屏切换保存播放状态
下一篇: 自定义圆头像
多吃糖
博客等级 码龄11年 6粉丝 23原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值