77ListView中item带有CheckBox复用缓存的问题(重点)(数据错乱)

在ListView的item中,当带有CheckBox的时候,用户点击选中第一个CheckBox的时候,往下拖动,发现下面没有选中的CheckBox也被选中了,好恶心啊!很简单,这是因为convertView复用带来的问题,在这个问题上,通常不会让CheckBox自己记住他自己的状态,选择在业务bean中记住CheckBox的状态,在业务bean中新增一个filed:

private boolean checked;

使用view的getTag方法得到ViewHolder:

lv_task_manager.setOnItemClickListener(new OnItemClickListener() {

			@Override
			public void onItemClick(AdapterView<?> parent, View view,
					int position, long id) {

				TaskInfo taskInfo;
				if (position == 0) {
					// 不响应点击事件
					return;
				} else if (position == (userTaskInfos.size() + 1)) {
					// 不响应点击事件
					return;
				} else if (position <= userTaskInfos.size()) {
					taskInfo = userTaskInfos.get(position - 1);
				} else {
					taskInfo = systemTaskInfos.get(position - 1
							- userTaskInfos.size() - 1);
				}
				System.out.println("--------------" + taskInfo.toString());
				ViewHolder viewHolder = (ViewHolder) view.getTag();
				if (taskInfo.isChecked()) {
					taskInfo.setChecked(false);
					viewHolder.cb_status.setChecked(false);
				}else {
					taskInfo.setChecked(true);
					viewHolder.cb_status.setChecked(true);
				}

			}
		});

在adapter设置CheckBox的状态:

viewHolder.cb_status.setChecked(taskInfo.isChecked());

OK ,问题解决。

时间: 2024-08-08 20:32:44

77ListView中item带有CheckBox复用缓存的问题(重点)(数据错乱)的相关文章

64ListView中item中有CheckBox带来的选择状态混乱的解决

如图:当选择第二个条目的时候,往下翻: 看到下面有的居然自己勾上了: 再网上翻,发现上面的有的也自己勾上了: 第一次遇到这个问题(手机管家项目第一次遇到这个问题,这里是拿<第一行代码>复习了),感觉好奇怪,甚至感觉有点不可思议.但是静下来想想,不过是因为复用convertView带来的问题. 解决方式: 第一步:在bean中新增 一个filed:checked,用来记录CheckBox的选择与否. 第二步,在onItemClickListener监听器中,使用view.getTag()取出Vi

listview中item 有checkbox多选防止滑动 listview页面 出现checkbox错位问题

checkbox点击切换背景 <CheckBox android:id="@+id/checkbox" android:layout_width="40dp" android:layout_height="40dp" android:button="@null" android:focusable="false" android:background="@drawable/playimage

CheckBox在ListView中的数据错乱

在ListView中,一般我们都会使用convertView参数,来滑动过程中,复用convertView对象来优化listView.但是如果在ListView中使用了CheckBox对象,就会出现数据错乱.比如我勾选了第一个item的CheckBox,往下滑动也会出现勾选的CheckBox.当然有些人说不优化,没次执行getView都创建一个view对象.但是那是非常不可取的,如果数据大的话,是非常要命的.本项目在实现优化的情况下,解决了CheckBox在ListView中的数据错乱,大家可以

Recycleview checkbox 复用出现混乱解决方法

今天在做项目的一个我的收藏页面时要实现这么一个效果: 每个item 前面都有一个checkbox ,主要布局是recycleview .当我们选中某项时,继续往下滑动下面某个的checkbox也会变成选中状态. 解决方法一比较暴力 viewHolder.setIsRecyclable(false); 这样viewholder就不进行复用,也不存在checkbox 混乱选中的问题了,但是 你滑动的时候卡的要死. 第二种就是在获取到的bean中设置一个标志位,但是需要修改bean .虽然只是加个字段

jQuery中ajax的使用与缓存问题的解决方法

jQuery中ajax的使用与缓存问题的解决方法 1:GET访问 浏览器 认为 是等幂的就是 一个相同的URL 只有一个结果[相同是指 整个URL字符串完全匹配]所以 第二次访问的时候 如果 URL字符串没变化 浏览器是 直接拿出了第一次访问的结果 POST则 认为是一个 变动性 访问 (浏览器 认为 POST的提交 必定是 有改变的) 防止 GET 的 等幂 访问 就在URL后面加上 ?+new Date();,[总之就是使每次访问的URL字符串不一样的] 设计WEB页面的时候 也应该遵守这个

jQuery中ajax的使用和缓存问题解决 $getjson 与$get都会被IE缓存

原文地址:http://www.cnblogs.com/fullhouse/archive/2012/01/17/2324842.html 1:GET访问 浏览器 认为 是等幂的就是 一个相同的URL 只有一个结果[相同是指 整个URL字符串完全匹配]所以 第二次访问的时候 如果 URL字符串没变化 浏览器是 直接拿出了第一次访问的结果POST则 认为是一个 变动性 访问 (浏览器 认为 POST的提交 必定是 有改变的)防止 GET 的 等幂 访问 就在URL后面加上 ?+new Date()

Android ExpandableListView 带有Checkbox的简单应用

expandablelistview2_groups.xml <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height=&qu

asp.net MVC中使用Html.Checkbox提示该字符串未被识别为有效的布尔值错误的解决方法

在asp.net MVC中使用Html.CheckBox提交后出现该字符串未被识别为有效的布尔值错误,或从类型“System.String”到类型“System.Boolean”的参数转换失败. 错误例子:@Html.CheckBox("UserID",item.IsTrue,new{value=item.UserID}) 这是由于MVC会在页面上生成<input id="UserID" name="UserID" value="

使得spinner和spinner中item有不同的背景图片-------自定义spinner,设计出你想要的spinner!

遇到问题描述: spinner样式的使用,系统自带的不能说是一般的丑,并且跟你设计的风格完全不合拍,但对于spinner通过改变背景 图片的方式使其看起来更加的美观,更符合我们的审美设计.我遇到的问题是,对于item和spinner都设计为同一个背景图片,如果不同,当选择 item之后,item的值会直接把spinner中图片覆盖掉,使得spinner得不到预期的显示,但spinner和item中有相同的背景图片有不太合适.问题就是 使得spinner和spinner中item有不同的背景图片?