当前位置: 代码迷 >> Android >> 请问有关ListView里的CheckBox选中的有关问题
  详细解决方案

请问有关ListView里的CheckBox选中的有关问题

热度:80   发布时间:2016-04-28 01:16:32.0
请教有关ListView里的CheckBox选中的问题。
我也百度了很多帖子,也试过网上的很多例子,但是依旧没能解决问题。希望能有好心人帮我看一下,不胜感激。
问题如下:ListView中的每条数据都是来自数据库,有自己的ID。现在要判断每个CHeckBox的选中状态,这个状态也是根据数据库中其他数据进行判断的(有一张表,保存了对应的ID和status标志,status表示勾选,没有勾选的则不会保存)。这两张图片是勾选后的状态,因为每一条点击后都会跳转到另一个activity(是一个填写问题的界面,如果填写了就是“查看问题”,没填写就是 “填写问题”)。问题信息是跟listview对应的每一条绑定的,因为这个listview显示的是一条条的标准。
下面是进行判断的语句:
if(!ct.isChecked){
//问题是否检查
getProblemSelected(ct.CHECKSTANDARDID);//进行数据查询获得是否勾选
//问题是否填写
getProblemDataInfo(ct.CHECKSTANDARDID);//进行数据查询,查询有没有问题记录,只查询对应的问题主键
if (problem.SHEETID !=null) {
holder.check_task_image.setText("查看问题");
holder.check_task_checkbox.setChecked(true);
holder.check_task_checkbox.setClickable(false);
_mList.get(index).isChecked = true;
}else if("1".equals(problemselected.STATUS)&&problem.SHEETID == null){
holder.check_task_image.setText("填写问题");
holder.check_task_checkbox.setChecked(true);
holder.check_task_checkbox.setClickable(false);
_mList.get(index).isChecked = true;
}else {
holder.check_task_image.setText("填写问题");
holder.check_task_checkbox.setClickable(true);
_mList.get(index).isChecked = false;
}
}
可能问题描述的不是很清晰,希望有过这方面经验的朋友能不吝赐教,不胜感激。
------解决思路----------------------
原因很简单,出现这情况证明你 使用缓存的 convertView,初始时ListView会从BaseAdapter中根据当前的屏幕布局实例化一定数量的view对象,不出意外是屏幕能够显示的数量+1个。   当你滑动屏幕的时候出现错乱是因为你所使用的某一个convertView里面的checkBox被选定过别的属性, 当下一个position使用这个convertView的时候checkBox应该被重新初始化一下,因为你这里
if(!ct.isChecked){}里写了逻辑 但else没有写checkBox是否被选中吧。不知道不能看懂不。
  相关解决方案