PullToRefreshListView 内嵌checkbox 数据丢失问题
来源:互联网 发布:网络精灵怎么关闭 编辑:程序博客网 时间:2024/05/21 18:39
在PullToRefreshListView 内部内嵌了Checkbox如下图所示:
原本设计思路是:对CheckBox 进行 setOnCheckedChangeListener 监听
当CheckBox 的状态变化的时候能即时将更新积分,并将 该item的checkbox 状态存到 ListView 中。
如下为checkbox 的程序片段
viewHolder.checkBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { //更新兑换所需积分 Message msg = new Message(); msg.what = 1;//更新标志 msg.arg2 = position;//记录位置 Log.e("test","CheckBox事件发生了-------------------------"); if (isChecked) {//增加 //Toast.makeText(context,"商品被选中了",Toast.LENGTH_SHORT).show(); list.get(position).put("isChecked", true); msg.arg1 = Integer.valueOf(list.get(position).get("goodPoints").toString());//arg1参数设为单件商品的积分 } else {//减少--1、清除改商品的所有积分 2、重置购买数量为1 list.get(position).put("isChecked", false); msg.arg1 = -Integer.valueOf(list.get(position).get("goodPoints").toString()) * Integer.valueOf(list.get(position).get("chooseNum").toString());//arg1参数= 单件商品的积分*购买数量 list.get(position).put("chooseNum", 1);//重置购买数量 //notifyDataSetChanged();//更新 } notifyDataSetChanged();//更新 handler.sendMessage(msg); }});但在实际运行的时候却发现了问题
但列表中项目较多,往下滑动列表的时候,会发现前面选择的项会自动清除
如下图:
前面勾选的商品已清除了(积分还在)
解决方法:
经尝试,发现大概原因如下:
因为每个item对应一个convertview,当该商品当前对应的convertview滑出可视页面时,convertview被重用,且其内部的数据进行了重置。
那么假如初始化的CheckBox的状态为false,那么便也会触发setOnCheckedChangeListener 动作,从而对该item的checkbox数据进行了修改,并保存到listview中
所以,问题的根源应该是item滑出页面的时候会触发setOnCheckedChangeListener 动作。
解决方法:对CheckBox的状态捕获不用setOnCheckedChangeListener 方法,而改用setOnClickListener方法
经测试,解决了问题
0 0
- PullToRefreshListView 内嵌checkbox 数据丢失问题
- 基础向:recyclerView 内嵌 edittext checkbox 焦点获取、数据紊乱以及数据保存问题
- Session数据丢失问题
- Memcache 丢失数据问题
- Redis数据“丢失”问题
- Flume 丢失数据问题
- Redis数据“丢失”问题
- hive导入数据丢失问题
- sparkStreaming Kafka数据丢失问题
- 一劳永逸解决CheckBox状态丢失或者错乱的问题
- checkbox数据回显问题
- checkbox数据回显问题
- PullToRefreshListView碰到的问题
- PullToRefreshListView的Position问题
- Android PullToRefreshListView使用问题
- PullToRefreshListView的小问题
- PullToRefreshListView 局部刷新问题
- gridview中使用CheckBox,解决CheckBox数据加载错乱问题
- yii2批量入库
- Xcode磁盘空间大清理
- iOS开发-常用第三方开源框架介绍(你了解的ios只是冰山一角)
- Core Animation - 摇动+循环动态画圆
- android studio 取消自动启动上次项目
- PullToRefreshListView 内嵌checkbox 数据丢失问题
- C++多个文件共享同一头文件时全局变量的声明
- 一个很简单的Java调用WSDL示例
- Glide 源码解析
- 淘宝大秒系统设计详解
- Android总结:四大组件
- Spring的JdbcTemplate、NamedParameterJdbcTemplate、SimpleJdbcTemplate
- HDOJ 2051 Bitset
- 怎样实现通过SearchView传递大量数据