自定义可勾选的ListView

winform编程设定listview选中行 在做项目中,需要用到listview显示数据。同时,项目要求,通过检索用户输入的数据,程序通过搜索,确定数据所在的行并通过程序设定为选中状态并高亮显示。同时,正常响应鼠标单击响应的效果,单击时,程序设定的选中行清除选中状态。类似的效果如下: 以选中第4行为例,我的实现代码如下:            //更改listView属性             this.listViewUser 阅读详情

在listview到item里面包含checkbox,是否遇到了选中一写条目,然后往下拖动再拖回来,选择到条目消失?

是否觉得用android.R.layout.simple_list_item_checked来作为list item的layout很方便且没有上面到问题,但是觉得那个layout无法自定义(checkbox在右边,我想放在左边)?

答案是可以的。

      针对第一个问题,网上说把checkbox到状态更新到adpter的data set里面,但是完全没有必要自己去做! listview已经为我们维护了条目的选中与否的状态(特别是在推出了action bar之后,不熟悉这个场景的可以跑一下4.0下的ApiDemo里的List15.java)。这个类就是SparseBooleanArray。

      “ListView就会把被选中的item项或者取消选中的item项的potion和bool值存进一个叫SparseBooleanArray的集合中,这里要注意一下,当你选中某一项的时候,他会存入,当你取消这一项的时候他会去修改这一项的bool值,将true改为false,但是并没有从这个集合中取消掉,这样通过listView的getCheckedPositions方法得到的集合中,就会包含已经取消的那一项了,这个方法并不会只返回value为true的元素”(摘自http://cnitcastsdut.blog.163.com/blog/static/1460180932010101774829201)

      所以通过for (int i = 0; i < sparseBooleanArray.size(); ++i)遍历,当sparseBooleanArray.valueAt(i)==true即遇到了选中的条目时,我们可以把sparseBooleanArray.keyAt(i)的值(即选中条目的position)保存起来。用于删除条目等操作。

      listview条目的选中状态还要用打勾与否的图片来显示,checkbox就正好可以用来干这事,不用自己贴图。当然摆放位置可以自己定。注意设置checkbox的android:clickable="false",并且将父layout节点设置android:descendantFocusability="blocksDescendants"属性,这样checkbox就被‘废’成indicator了。

      重要的是你的自定义View要实现Checkable接口的setChecked(boolean checked)方法(这个方法会被listview反复调用)。在里面做mCheckBox.setChecked(checked)。还有ListView的setItemChecked(int position, boolean value)就相当于实现让人去点击选中和点击取消选中。

示例代码下载


Android 自定义listview,添加删除。 Listview 添加删除 阅读详情

相关推荐

android listview实现树形菜单及进行选择操作

实习的boss给我布置了一个作业,由于是新手,中间折腾了好长的时间进行制作,制作的效果如下 关于listview实现多级树形菜单的代码我就不贴出来了,有兴趣的朋友可以去慕课网自己看,上面有老师教你如何制作,你只需要跟着一步一步制作就行了,下面主要是适配器的问题。 但是问题来了,如何进行item项目的选择(即点击右边圆圈实现勾选的操作),首先你要自己改变item的布局,并且判

Anny_Lin的博客 2702

C# ListView用法详解

一、ListView类           1、常用的基本属性:         (1)FullRowSelect:设置是否行选择模式。(默认为false) 提示:只有在Details视图该属性才有意义。         (2) GridLines:设置行和列之间是否显示网格线。(默认为false)提示:只有在Details视图该属性才有意义。         (3)AllowColumn

雾里看花 18万+

STM32 RAM深度解析:从硬件结构到栈溢出排查与优化

在嵌入式开发中,RAM管理直接影响系统的稳定性与性能。与PC可自由扩展的内存条不同,STM32的片内SRAM容量固定在芯片内部,其内存空间通过链接脚本和启动文件划分为栈、堆、全局区等不同区域。理解这些内存分区的原理,是排查栈溢出、HardFault以及优化RAM占用的基础。实际项目中,合理配置栈大小、将大常量放Flash、利用复用缓冲区等手段,往往能为LVGL、FreeRTOS等应用节省大量RAM空间。本文从硬件结构出发,深入解析STM32的RAM特性,并与PC内存进行对比,帮助开发者掌握RAM空间优化的实

weixin_33957648的博客 360

Listview Checkbox错乱问题

在listview中用其他控件可能没有出现复用的问题,但如何有checkbox或者点击改变背景则会发现下面的条目也随着改变了。 解决办法: 设置一个Map集合,用于保存第一个listview中数据的选中与否状态,然后根据这个状态设置给checkbox的状态,这样就不会混乱了。 第一步:Map public Map<Integer,Boolean> isCheck = null;第二步:初始化

androidxiaogang的博客 2236

C#自写支持打勾的listview数据列表功能

用C#自已编写的支持打勾功能的listview数据列表,最适用于权限设置,因为C#中没有现成的完成 这种功能 的控件,索性自己想写一个,虽然不能和成品的控件相比 ,但我自己感觉已经满意了,必竟用起来感觉不错哦。

实现勾选一个CheckBox,ListView被全选

勾选一个CheckBox,ListView里面的每个CheckBox被勾选,只要ListView里的一个CheckBox没有被勾选,上面的CheckBox就会没被勾选

treeview

ctx.moveTo(width/2,0) //如果第一个item虚线是从左侧拉过来,要改很多。ListView 文档:https://doc.qt.io/qt-5/qml-qtquick-listview.html。//此外还有5的偏移是因为我image是透明背景的,为了不污染到图标。代码github:https://github.com/gongjianbo/QmlTreeView。思路参考:https://github.com/peihaowang/QmlTreeWidget。

lusic01的专栏 1094

2.设置Salesforce开发环境

Salesforce DX:salesforce Developer Experience (salesforce开发人员体验)LWC:Lightning Web Component(注意首字母是大写的,是一个概念,小写的话有组件本身的含义)CLI:Command Line Interface(命令行界面)version control system (VCS):版本控制系统。

nihaixiao的博客 2197

Qt QML自定义LIstView

多个ListView组合成一个表格,实现某些列可以固定,其他列可以拖动展示的样式

u014147126的博客 1228

CCS20实战入门:第一个工程搭建示例

通过实际操作演示如何在ccs20中创建并配置首个开发项目,涵盖环境设置与基础调试步骤,帮助新手快速上手ccs20集成开发环境,提升嵌入式开发效率。

weixin_31185473的博客 884

FAST-LIO 实战:从 LI-Init 标定到 YAML 配置全解析

本文详细解析了FAST-LIO算法中LI-Init标定的关键步骤与YAML配置优化技巧。从激光雷达与IMU的时空标定原理到实战参数调优,提供了一套完整的解决方案,帮助开发者解决点云畸变、建图漂移等常见问题,提升SLAM系统在动态环境中的稳定性和精度。

weixin_42651281的博客 326

android的listview加checkbox实现单保存checkbox的勾选信息

最近做一个项目时想要增加安卓端的一个功能,就是增加一个activity上面有很多checkbox的勾选信息,然后可以给人选择多选框,看起来还算很简单。。但是真正做起来就有很多麻烦了。。 虽然我对安卓有点了解,以前也看过一些代码,但都是看别人的代码,看代码当然简单啦,这下要全部自己写,这下有点棘手了,一开始真是无从下手啊,后来去网上查了一下,觉得有个人的写法不错,就是用listview导入adap

zale 4219

避坑指南:为什么你的conda环境装不上Mamba?从CUDA到ABI的深度排查

本文深入解析conda环境中安装Mamba架构时常见的CUDA版本冲突、ABI不匹配等问题,提供从基础检查到深度排查的系统化解决方案。针对`causal-conv1d`和`mamba-ssm`安装失败场景,详细讲解PyTorch版本绑定、编译器工具链兼容性等关键技术要点,并给出预编译wheel选择、动态链接库配置等实用修复方案。

weixin_33738555的博客 346

QML自定义一个TreeView,使用ListView递归

0.前言 在 Qt5 的 QtQuick.Controls 2.x 中还没有 TreeView 这个控件(在 Qt6 中出了一个继承自 TableView 的 TreeView),而且 QtQuick.Controls 1.x 中的也需要配合 C++ model 来自定义,对于一些简单的需求还要写 C++ model 就显得费事儿。 参照别人的自定义 TreeView 实现,我也使用 ListView 嵌套的方式做了一个简易的 TreeView,主要功能就是根据 json 结构来生成一个树状列表。 (

龚建波 9432

从电商平台到微信私域:构建合规跳转链路的技术实现

在互联网营销与用户增长领域,链接跳转是连接不同平台、引导用户流量的基础技术。其核心原理是通过服务器端路由与参数解析,实现用户请求的接收、处理与重定向。这项技术的价值在于能够突破平台间的生态壁垒,实现流量的合规、可控迁移,尤其适用于跨平台营销、私域沉淀等场景。在实际应用中,常需处理微信环境限制、参数传递与动态内容生成等挑战。本文聚焦于电商平台(如淘宝)到微信生态的跳转需求,详细阐述了如何利用Node.js、Express框架及二维码生成技术,构建一个包含环境检测、参数传递与动态落地页的完整跳转系统,以解决微信

weixin_33889665的博客 323

写给开发人员的实用密码学 - Hash算法

说到Hash(哈希),开发人员应该不陌生,比如Hash表是一种非常常用的数据结构,通过Hash表能够根据键值快速找到数据。哈希函数将文本(或其他数据)映射为整数,从而能够提高检索效率。密...

云水木石 1503

Android单选列表的实现

https://blog.youkuaiyun.com/YuannaY/article/details/100166315 项目需要实现的效果: 项目需求: 简单的说一下项目需求,人员管理时添加和编辑岗位,需要一个岗位的单选列表。我没找到现成的控件,所以我自己手写了一个。 说一下实现的思路:其实就是一个ListView,列表元素内含两个元素,第一个是textView,第二个就是ImageView,默认不显示√,点击后显示√。 思路很清晰,但是在实现的时候我遇到了一些问题,查过一些博客,关键就是关于

az44yao的专栏 1582

【深度学习新浪潮】算力行业的核心技术有哪些?

算力行业核心技术是芯片+互联+存储+调度+能效+软件的全栈协同:芯片提供算力、互联打通集群、存储保障数据、调度提升效率、能效支撑规模、软件释放算力。当前AI大模型推动算力从“单机”走向“万卡级超节点集群”,技术竞争从单一芯片升级为系统级、全栈化的综合能力。

专注:太空算力、AI infra、异构调度、大模型成本工程 338

ListView的ItemCheck和ItemChecked事件

ItemCheck:指示某项的选中状态将要更改,直到事件发生后,该值才会更新。 ItemChecked:当ListView的Checked属性更改时引发的事件。 两个事件都是由ListView.Items[i].Chcked属性改变引起的。 ItemCheck是

拿铁加不加糖 1万+

boost::circular_buffer缓行缓冲区

1、circular_buffer实现了一个环形缓冲区,空间大小是固定的,当到达容器末尾时,将自动利用容器另一端的位置空间。 2、当程序需要容纳大量的元素,但多数情况下仅保存较少数量元素时可以使用circular_buffer_space_optimized,他可以有效的减少内存的占用,提高程序的运行效率。 3、主要接口: 4、实现一个生产者---消费者模式示例: #inc...

小米的修行之路 791

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

CListCtrl子项图标和勾选

设置子项图标 设置列表的扩展属性, 必须是LVS_REPORT类型的列表 m_listIn.SetExtendedStyle(m_listIn.GetExtendedStyle() | LVS_EX_FULLROWSELECT | LVS_EX_SUBITEMIMAGES | LVS_EX_GRIDLINES); 创建图像列表 m_imgList.Create(16, 16, ILC_COLOR4, 0, 1); m_imgList.Add(LoadIcon(AfxGetInstanceHandle(),

cfz751740465的博客 449

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

自定义适配器实现List的勾选及删除!

ListView的展示需要数据源,而数据源又需要适配器,若实现简单的LisetView,则可以利用现成的适配器,如SimpleAdapter,然而想操控灵活的话最好还是自己实现,以继承BaseAdapter为例:     BaseAdapter由于是抽象类,而且还需要实现一些接口,因此在子类也需要实现重要的接口方法,以下四个方法是默认必须添加的: @Override public int g

追 2490

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

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

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

上一篇: android插入彩信数据库
下一篇: android TextView 容纳不下内容,让字向左滚动的办法
tedzyc
博客等级 码龄15年 9粉丝 21原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值