listview进行item多选、全选、反选操作。

2024-06-13 10:32

本文主要是介绍listview进行item多选、全选、反选操作。,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

<pre name="code" class="html">  Context context;List<MineCollectionEntity.BodyBean.ElementsBean> list;boolean isCheck;// 用来控制CheckBox的选中状况private static HashMap<Integer, Boolean> isSelected;public CollectionListAdapter(Context context, List<MineCollectionEntity.BodyBean.ElementsBean> list, boolean isCheck) {this.context = context;this.list = list;this.isCheck = isCheck;isSelected = new HashMap<Integer, Boolean>();// 初始化数据initDate();}// 初始化isSelected的数据public void initDate() {isSelected = new HashMap<Integer, Boolean>();for (int i = 0; i < list.size(); i++) {getIsSelected().put(i, false);}}public static HashMap<Integer, Boolean> getIsSelected() {return isSelected;}public static void setIsSelected(HashMap<Integer, Boolean> isSelected) {CollectionListAdapter.isSelected = isSelected;}public void setIsCheck(boolean isCheck) {this.isCheck = isCheck;}@Overridepublic int getCount() {return list.size();}@Overridepublic Object getItem(int position) {return list.get(position);}@Overridepublic long getItemId(int position) {return position;}@Overridepublic View getView(final int position, View convertView, ViewGroup parent) {ViewHolder viewHolder = null;if (convertView == null) {viewHolder = new ViewHolder();convertView = View.inflate(context, R.layout.item_coll, null);viewHolder.iv_icon = (ImageView) convertView.findViewById(R.id.iv_icon);viewHolder.isCheakBox = (CheckBox) convertView.findViewById(R.id.isCheakBox);viewHolder.tv_time = (TextView) convertView.findViewById(R.id.tv_time);viewHolder.tv_title = (TextView) convertView.findViewById(R.id.tv_title);viewHolder.tv_jiangshi = (TextView) convertView.findViewById(R.id.tv_jiangshi);viewHolder.tv_fenlei = (TextView) convertView.findViewById(R.id.tv_fenlei);convertView.setTag(viewHolder);} else {viewHolder = (ViewHolder) convertView.getTag();}MineCollectionEntity.BodyBean.ElementsBean bean = list.get(position);if (!TextUtils.isEmpty(bean.getCourseImgPath())) {Picasso.with(context).load(bean.getCourseImgPath()).placeholder(R.drawable.home_top).error(R.drawable.home_top).into(viewHolder.iv_icon);}if (isCheck) {viewHolder.isCheakBox.setVisibility(View.VISIBLE);viewHolder.isCheakBox.setChecked(getIsSelected().get(position));} else {viewHolder.isCheakBox.setVisibility(View.GONE);}final ViewHolder finalViewHolder = viewHolder;convertView.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {finalViewHolder.isCheakBox.setChecked(!finalViewHolder.isCheakBox.isChecked());getIsSelected().put(position, finalViewHolder.isCheakBox.isChecked());}});viewHolder.isCheakBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {@Overridepublic void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {getIsSelected().put(position, isChecked);}});viewHolder.tv_time.setText(bean.getDuration());viewHolder.tv_title.setText(bean.getCourseName());viewHolder.tv_jiangshi.setText(bean.getAuthorName());return convertView;}class ViewHolder {ImageView iv_icon;TextView tv_time, tv_title, tv_jiangshi, tv_fenlei;CheckBox isCheakBox;}
将点击的item的position保存到map中。
 
<pre name="code" class="html"> @OnClick(R.id.tv_all)public void allClick() {isAll = !isAll;if (isAll) {tv_all.setText("反选");for (int i = 0; i < list.size(); i++) {CollectionListAdapter.getIsSelected().put(i, true);}} else {for (int i = 0; i < list.size(); i++) {tv_all.setText("全选");if (CollectionListAdapter.getIsSelected().get(i)) {CollectionListAdapter.getIsSelected().put(i, false);} else {CollectionListAdapter.getIsSelected().put(i, true);}}}adapter.notifyDataSetChanged();}
<span style="font-size:18px;"><strong>通过点击事件改编listview的显示。</strong></span>

                                    

这篇关于listview进行item多选、全选、反选操作。的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1057047

相关文章

【Prometheus】PromQL向量匹配实现不同标签的向量数据进行运算

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。 🏆《博客》:Python全栈,前后端开发,小程序开发,人工智能,js逆向,App逆向,网络系统安全,数据分析,Django,fastapi

业务中14个需要进行A/B测试的时刻[信息图]

在本指南中,我们将全面了解有关 A/B测试 的所有内容。 我们将介绍不同类型的A/B测试,如何有效地规划和启动测试,如何评估测试是否成功,您应该关注哪些指标,多年来我们发现的常见错误等等。 什么是A/B测试? A/B测试(有时称为“分割测试”)是一种实验类型,其中您创建两种或多种内容变体——如登录页面、电子邮件或广告——并将它们显示给不同的受众群体,以查看哪一种效果最好。 本质上,A/B测

遮罩,在指定元素上进行遮罩

废话不多说,直接上代码: ps:依赖 jquer.js 1.首先,定义一个 Overlay.js  代码如下: /*遮罩 Overlay js 对象*/function Overlay(options){//{targetId:'',viewHtml:'',viewWidth:'',viewHeight:''}try{this.state=false;//遮罩状态 true 激活,f

动手学深度学习【数据操作+数据预处理】

import osos.makedirs(os.path.join('.', 'data'), exist_ok=True)data_file = os.path.join('.', 'data', 'house_tiny.csv')with open(data_file, 'w') as f:f.write('NumRooms,Alley,Price\n') # 列名f.write('NA

利用matlab bar函数绘制较为复杂的柱状图,并在图中进行适当标注

示例代码和结果如下:小疑问:如何自动选择合适的坐标位置对柱状图的数值大小进行标注?😂 clear; close all;x = 1:3;aa=[28.6321521955954 26.2453660695847 21.69102348512086.93747104431360 6.25442246899816 3.342835958564245.51365061796319 4.87

线程的四种操作

所属专栏:Java学习        1. 线程的开启 start和run的区别: run:描述了线程要执行的任务,也可以称为线程的入口 start:调用系统函数,真正的在系统内核中创建线程(创建PCB,加入到链表中),此处的start会根据不同的系统,分别调用不同的api,创建好之后的线程,再单独去执行run(所以说,start的本质是调用系统api,系统的api

Java IO 操作——个人理解

之前一直Java的IO操作一知半解。今天看到一个便文章觉得很有道理( 原文章),记录一下。 首先,理解Java的IO操作到底操作的什么内容,过程又是怎么样子。          数据来源的操作: 来源有文件,网络数据。使用File类和Sockets等。这里操作的是数据本身,1,0结构。    File file = new File("path");   字

MySQL——表操作

目录 一、创建表 二、查看表 2.1 查看表中某成员的数据 2.2 查看整个表中的表成员 2.3 查看创建表时的句柄 三、修改表 alter 3.1 重命名 rename 3.2 新增一列 add 3.3 更改列属性 modify 3.4 更改列名称 change 3.5 删除某列 上一篇博客介绍了库的操作,接下来来看一下表的相关操作。 一、创建表 create

Python脚本:对文件进行批量重命名

字符替换:批量对文件名中指定字符进行替换添加前缀:批量向原文件名添加前缀添加后缀:批量向原文件名添加后缀 import osdef Rename_CharReplace():#对文件名中某字符进行替换(已完结)re_dir = os.getcwd()re_list = os.listdir(re_dir)original_char = input('请输入你要替换的字符:')replace_ch

封装MySQL操作时Where条件语句的组织

在对数据库进行封装的过程中,条件语句应该是相对难以处理的,毕竟条件语句太过于多样性。 条件语句大致分为以下几种: 1、单一条件,比如:where id = 1; 2、多个条件,相互间关系统一。比如:where id > 10 and age > 20 and score < 60; 3、多个条件,相互间关系不统一。比如:where (id > 10 OR age > 20) AND sco