购物车-----ListView 中CheckBox混乱

listview中CheckBox的监听回调 调用: public class Messages extends BaseAvtivity implements View.OnClickListener { private ListView messages; private ArrayList list; private listAdapter_message mAdapter; private Lin 阅读详情

这里写图片描述

Demo:https://github.com/SunnyLine/NewShopCart/tree/master/MyApplication

这里只是购物车页面,地址管理,和订单生成都没有添加。主要处理ListView中CheckBox混乱问题,商品删除,数量增减,全选,取消全选,等。代码如下:

Adapter ,用Map记住CheckBox状态和CheckBox标记信息

    public void init() {
                bean = mList.get(position);
                tvGoodNum.setText(String.valueOf(bean.number));
                tvMedicineName.setText(bean.name);
                tvMedicineInfo.setText(bean.describe);
                tvGoodNum.setText(String.valueOf(bean.number));
                tvMedicinePrice.setText(getString(R.string.price, String.valueOf(bean.price)));
                ImageLoader.getInstance().displayImage(bean.img, imgIcon, options, listener);
                cbItem.setOnCheckedChangeListener(this);
                imgCartAdd.setOnClickListener(this);
                imgCartDel.setOnClickListener(this);
                imgCartCut.setOnClickListener(this);
                boolean b = isSelected.get(bean) != null && isSelected.get(bean) ? true : false;
                cbItem.setChecked(b);
            }

            @Override
            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                if (isChecked) {
                    isSelected.put(bean, isChecked);
                    handler.sendEmptyMessage(1);
                } else if (isSelected.containsKey(bean) && !isChecked) {
                    isSelected.remove(bean);
                    handler.sendEmptyMessage(1);
                }
            }

Item 加减商品数量,删除商品

 @Override
            public void onClick(View view) {
                switch (view.getId()) {

                    case R.id.imgCartCut:
                        if (bean.number > 1) {
                            bean.number--;
                        }
                        tvGoodNum.setText(String.valueOf(bean.number));
                        handler.sendEmptyMessage(0);
                        break;
                    case R.id.imgCartAdd:
                        bean.number++;
                        tvGoodNum.setText(String.valueOf(bean.number));
                        handler.sendEmptyMessage(0);
                        break;
                    case R.id.imgCartDel:
                        AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
                        builder.setMessage("确定要删除吗?").setPositiveButton("确定", new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialog, int which) {

                                if (isSelected.containsKey(bean)) {
                                    isSelected.remove(bean);
                                }
                                mList.remove(bean);
                                notifyDataSetChanged();
                                handler.sendEmptyMessage(0);
                            }
                        }).show();
                        break;
                }
            }

Handler 计算商品合计(选中的商品)

    private Handler handler = new Handler() {
        @Override
        public void handleMessage(Message msg) {
            super.handleMessage(msg);
            switch (msg.what) {
                case 1:
                    cbSelectAll.setChecked(isSelected.size() == mList.size());
                case 0:
                    float total = 0f;
                    Iterator<Map.Entry<MedicineBean, Boolean>> iterator = isSelected.entrySet().iterator();
                    while (iterator.hasNext()) {
                        Map.Entry<MedicineBean, Boolean> entry = iterator.next();
                        MedicineBean b = entry.getKey();
                        total += b.number * b.price;
                    }
                    tvTotal.setText(getString(R.string.total, String.format("%.2f", total)));
                    break;
            }
        }
    };
Android自定义ActionBar实战:Toolbar与AppCompatActivity深度集成指南 ActionBar是Android系统对顶部操作区域的行为契约,而非过时的UI组件;其核心在于统一管理返回导航、菜单展开、状态栏集成与Fragment联动等生命周期行为。基于AppCompatActivity的getSupportActionBar()机制,Toolbar作为物理载体可无缝接入系统级能力,如onCreateOptionsMenu回调、无障碍支持及Material主题适配。这种‘契约抽象+物理实现’模式,显著提升多页面顶部栏的一致性、可维护性与可测试性,广泛应用于政务、金融、医疗等需长期迭代的 阅读详情

相关推荐

Android中使用ListView和CheckBox实现购物车多选功能

1效果图 2MainActivity对应的布局activity_main &amp;lt;LinearLayout xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot; xmlns:tools=&quot;http://schemas.android.com/tools&quot; android:layout_width=&quot;match_...

翟浩浩Android专栏 3869

购物车ListView中CheckBox的逻辑处理

最近在做一个项目,在做购物车的时候研究适配器内的CheckBox点击后Activity的数据更新,经过网上查找资料后问题解决,当然,也得感谢一下群里的大神提供了思路。 列表中的CheckBox选中状态与一个Map进行绑定,利用 adapter.notifyDataSetChanged();来更新界面。 至于当点击item中的CheckBox时,则调用了自定义的监听器来修改数据 Act

zhaowei_zhang的博客 1717

Flutter面试题深度解析:从渲染原理到混合开发与工程化实战

Flutter作为跨端开发框架,其核心价值在于通过自绘引擎实现高性能UI渲染,同时借助Platform Channel桥接原生能力。理解Widget、Element、RenderObject三棵树的关系,能帮开发者定位渲染链路中的性能瓶颈;掌握热重载机制,则能快速规避"flutter热重载后浏览器没更新"等环境类陷阱。在工程应用中,混合开发与原生模块交互必不可少,例如"flutter 微信登录"就依赖MethodChannel正确回传生命周期事件;而遇到"cmake error"类报错时,需从原生工具链配置

weixin_34279246的博客 271

安卓Android开发:listView+checkbox的简单实现

安卓Android开发:listView+checkbox的简单实现 项目要用到列表显示并实现每一个条目item的选择。参考网上的listView案例基本上都是在getview处用 holder 作tag来完成的。我用了一下但是在滚动过程中经常出现错乱。holder方案的思路就是只加载显 示部分的数据。这样做的优势是更高效,特别是item数据比较多的情况下。我这里用的方法是在调用数 据表格

jstaxi的专栏 958

ListView和CheckBox实现购物车多选

本demo主要提供了android项目中购物车模块,利用ListView和CheckBox,实现多选加入购物车功能的简单思路及实现。

threejs加载3dtiles(倾斜摄影)数据

1、安装3dTilesRenderer 插件 使用npm 安装 npm install 3d-tiles-renderer --save 或者去官网下载都行 GitHub - NASA-AMMOS/3DTilesRendererJS: Renderer for 3D Tiles in Javascript using three.js 2、使用 首先引入,在填入3dtiles数据的地址,可以是文件路径也可以是网站路径 const tilesRenderer = new TilesRend..

weixin_39481659的博客 1万+

Android listview里面包含checkbox

如果一个listview中包涵checkbox,比如购物车。要是去点击每个商品前面的checkbox的话比较难以点击,有时候设置成点击item就相当于点击了checkbox. 代码如下 public class MainActivity extends Activity { List beanList; private ListViewAdapter adapter; priv

aosting的专栏 747

基于深度学习的UWB门禁检测

针对基于UWB技术智能门禁管理系统,由于测距误差或非视距原因导致门禁产生不合理动作的现象。分析如何采用基于深度学习的方法,通过对TWR测距数据、TWR监听数据、到达角度差(PDOA)、信道脉冲响应(CIR)等数据维度进行深度学习,利用 TensorFlow建立相应的推导模型,对卡片姿态进行更加精准可靠的检测,从而更好完成闸机开合控制。

tenth_quadrant的博客 2027

Android ListView中CheckBox错位问题的解决方案

在Android开发中,ListView作为经典列表控件,其视图复用机制能显著提升滚动性能,但也带来了状态同步的挑战。当结合CheckBox实现多选功能时,常见的错位问题源于视图复用与数据绑定不同步。通过ViewHolder模式优化性能的同时,必须确保数据模型作为唯一真相源,并在getView()中正确处理状态重置与事件监听。这种解决方案不仅适用于电商App的商品多选场景,也能推广到任何需要保持列表项状态的界面。采用RecyclerView替代方案或结合数据绑定技术,可以更优雅地实现稳定的多选列表功能。

weixin_28256233的博客 340

Ansys CFX Pre 中 RGP 表的高级配置与优化策略

本文深入探讨了Ansys CFX Pre中RGP表的高级配置与优化策略,旨在帮助用户将仿真从“能用”提升至“精准好用”。文章重点解析了如何根据具体仿真场景,科学设定温度压力范围、选择流体类型,并针对相变等复杂工况实施网格加密与分离建表等关键优化技术,以显著提升计算精度与稳定性。

weixin_29216957的博客 1180

昇腾CANN实战:如何用DVPP+AIPP实现32路视频流毫秒级预处理(附性能对比)

本文深入探讨了昇腾CANN架构中DVPP和AIPP模块在32路视频流毫秒级预处理中的硬件加速技术。通过异构计算架构的优化,实现了从传统CPU方案的40.7毫秒到CANN方案3.4毫秒的显著性能提升,特别适用于智能安防领域的实时视频分析需求。文章详细解析了DVPP多通道并行设计和AIPP模型级预处理融合的技术细节,并提供了性能对比数据与实战调优经验。

alice7model的博客 920

添加CheckBox实现ListView的长按批量删除

  工作中遇到这样的需求,在长按ListView的Item的时候出现复选框,可进行批量选择,从而实现批量删除。   实现原理如下:   ListView每一条Item的数据我们通常存放在List集合中,考虑到ListView的复用问题,需要在我们的数据集合中新加入一个字段,用来记录是否勾选了当前的Item,当勾选复选框或者取消勾选的时候,用来记录的字段相应的改为true或者false...

weixin_30426065的博客 133

层层剖析,让你彻底搞懂Self-Attention、MultiHead-Attention和Masked-Attention的机制和原理

本文内容 本文基于李宏毅老师对 Self-Attention 的讲解,进行理解和补充,并结合Pytorch代码,最终目的是使得自己和各位读者更好的理解Self-Attention 李宏毅Self-Attention链接: https://www.youtube.com/watch?v=hYdO9CscNes PPT链接见视频下方 通过本文的阅读,你可以获得以下知识: 什么是Self-Attention,为什么要用Self-Attention? Self-Attention是如何做的? Self-Atten

iioSnail的博客 2万+

android listview中checkbox(购物车,批量操作)

最近在做购物车这里。 在做全选的时候 总会出现getchillat()空指针的问题,所以放弃了。 后来参考了网上的一些例子。 这篇:http://www.open-open.com/lib/view/open1343744786602.html还算可以 在适配器中把view放入map中。 算是解决了一般的问题。 至于加入之后就可以看下面...

weixin_34267123的博客 341

Unreal从入门到精通之如何绘制用于VR的3DUI交互的手柄射线

之前我写过一篇文章《Unreal5从入门到精通之如何在VR中使用3DUI》,其中讲到使用WidgetComponent和3DUI进行交互。然而,这种方法存在一个问题:为了让射线可视化,我们需要勾选“调试/显示调试”,这样才能在手柄上看到代表其指向的一条红色射线。但最关键的问题是,这个显示调试信息的功能只属于Debug调试模式,也就是说,一旦将项目正式打包发布,这条射线辅助线就没有了。如下图所示:我就觉得Unreal官方真的是有点过分了,这不应该是最基本的功能么?难道我们VR要在Debug模式下发布?

TxNet 1612

调用魔搭API出现Please bind your Alibaba Cloud account before use的解决方案

本文主要介绍了调用魔搭API出现Please bind your Alibaba Cloud account before use解决方案,希望能对使用大模型的同学们有所帮助。 文章目录 1. 问题描述 2. 解决方案

weixin_43178406的博客 3万+

android listview 中的checkbox,Android中ListView与CheckBox的使用,及问题解决

最近自己在编写有关SIM卡管理的软件做练习,其中使用到了ListView与CheckBox的的组合,遇到了和大家有同样的问题:1.选中一个checkbox对应位置的其他checkbox也会被选中2.选中一个checkbox之后,滑动滚动条,之前选中的checkbox会莫名其妙的取消选中于是网上搜之,具体的问题所在,网上答得也是很含糊,由于接触android时间不长,其中的原因我也不是很清楚,不过总...

weixin_39958025的博客 829

三峡大学-微机原理与接口技术实验

其中,A15接E1,因此,A15为1,A14A13A12A11A10A9A8A7通过八输入与非门74LS30与E2连接,因此A14A13A12A11A10A9A8A7为11111111,A6A5A4与CBA连接,因此A6A5A4为101,A3A2A1A0不参与译码,因此IO5的地址范围为1111 1111 1101 0000B~1111 1111 1101 1111B,即0FFD0H~0FFDFH。如图1所示,若IO0输出为低电平,则需要E1接高电平,E2接低电平,E3接低电平,CBA的输入为000。

m0_62222486的博客 496

Android listView+CheckBox的实现

                        Android  listView+CheckBox的实现      之前项目里面需要listView+RadioButton的实现,然后自己闲着没事就想实现以下ListView+CheckBox,说干就干动手做了以下,因为listView存在复用的功能,所以也会存在一些问题 存在问题的样例: 1、MainActivity的页面布局 act...

tiger_gy的博客 7167

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

Android 购物车全选以及listview中checkbox状态

先看下天猫的效果图下面话一张图再分析下细节下面看下我实现的效果图然后资源下载地址http://download.youkuaiyun.com/detail/qq_15950325/9754268 最后需要开车的加群!转载请注明出处http://blog.youkuaiyun.com/qq_15950325/article/details/55101126!

郑敏 2475

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

android listview 自定义checkbox,Android开发之ListView,加入CheckBox(复选框),实现选择列表...

Android ListView没行加入CheckBox,实现选择列表,既可点击复选框进行选中,也可以点击list一行进行选中,效果图如下: 下面贴下主要代码的实现:对于列表中复选框,我们需要在复选框的状态发生变化时,保存复选框的状态,不然在拖动列表过程中,会丢失复选框的状态。在这里我们采用下面方式保存:public class Person implements Serializable{/**...

weixin_30714077的博客 701

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

android listView的每一行里面 有checkbox

1.  在listView 的每一行里面有  checkBOX 的情况,一般   checkbox 会挡住 listView获得的焦点导致listView 不可点      此时,只需要在  checkBOX 里面加上 fucusbale = "false" 即可

ym19860303的专栏 1367

两个ListView实现的Android点餐页面

这是一个运用两个ListView实现的简单的Android点餐页面,实现添加时,左边分类栏和底部购物车均有数量提示。热门推荐中的商品下面具体分类中有重复,所以添加时,只有当前数量,左侧热门推荐栏目没有数量提示,而其对应的具体商品中数量随之增加,同时对应的商品详情数量也随之增加。购物车部分,实现对已选商品的添加减少,以及清空,保证点餐页面数据也随之改变。

Henry__Mark的博客 7925

listView + CheckBox的使用

listView + checkbox 使用

qq_34603555的博客 2258
上一篇: SQLite、Cursor简单使用
下一篇: SwipeRefreshLayout+RecyclerView 下拉刷新
hello_12413
博客等级 码龄14年 8粉丝 55原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值