首页 > 代码库 > 77ListView中item带有CheckBox复用缓存的问题(重点)(数据错乱)
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 ,问题解决。
77ListView中item带有CheckBox复用缓存的问题(重点)(数据错乱)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。