码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2014-12-23 19:36:02      阅读:383      评论:0      收藏:0      [点我收藏+]

标签:android 手机管家   listview复用   listview中item带有check   

在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 ,问题解决。

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

标签:android 手机管家   listview复用   listview中item带有check   

原文地址:http://blog.csdn.net/chenfuduo_loveit/article/details/42105425

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有
迷上了代码!