ListView中CheckBox错乱解决

思路:

ListView在复用的时候会出现很多问题,CheckBox状态会出现错乱,解决思路:

1.使用Map集合的键值对的形式来存放position位置上CheckBox的状态

2.监听CheckBox的状态改变Listener,如果选中就往Map中添加一个position,true  如果取消,则将map中对应的键值对移除。

直接代码:

private Map<Integer, Boolean> isCheckMap =  new HashMap<Integer, Boolean>();

holder.check,setTag(position);

if (isCheckMap!= null  && isCheckMap.containsKey(position)) {

holder.checkBox.setChecked(isCheckMap.get(position));

}else {

holder.checkBox.setChecked(false);

}

holder.checkBox.setOnCheckedChangeListener(new OnCheckedChangeListener() {

@Override

public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {

if(isChecked)

{

//将选中的放入hashmap中

isCheckMap.put(position, isChecked);

}

else

{

//取消选中的则剔除

isCheckMap.remove(position);

}

}

});

来自为知笔记(Wiz)

时间: 2024-10-02 01:23:45

ListView中CheckBox错乱解决的相关文章

抛砖引玉:关于Android的ListView中CheckBox错乱

首先:参考了这篇翻译的文章:http://www.cnblogs.com/xiaowenji/archive/2010/12/08/1900579.html 文章中关于说的Android中的Recycler比较模糊,Android会维持屏幕中显示的item+1个对象.但是复用的时候选择哪个对象来复用的机制并不明确,具体用的是什么数据结构,求告知...肯定不是简单的FIFO或LIFO. 关于checkBox,选中了之后,下滑之后返回就消失的问题.有以下两种方式供大家参考: data是给TextVi

android ListView中CheckBox错位的解决

貌似已经很晚了,但是还是想记下笔记,想让今天完满. 在ListView中加了checkBox,可是发现点击改变其选中状态的时候,发现其位置错乱.状态改变的并不是你选中的,百思不得其解.后面通过上网查资料,可是个说纷纭,但是我还是找到了解决办法. 在自定义的适配器中,对checkBox的设置如下: 记住两者的顺序,先对checkBox进行事件监听,再设置其状态.前提在布局中对checkBox的状态设为false. android ListView中CheckBox错位的解决,布布扣,bubuko.

案例:ListView中checkbox错位问题及onCreateContextMenu失效问题

本文涉及两个问题: ListView中checkbox错位问题 oncreateContextMenuListener失效问题 activity_listview_item.xml: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layo

实现listview中checkbox的多选与记录

android UI进阶之实现listview中checkbox的多选与记录 今天继续和大家分享涉及到listview的内容.在很多时候,我们会用到listview和checkbox配合来提供给用户一些选择操作.比如在一个清单页面,我们需要记录用户勾选了哪些条目.这个的实现并不太难,但是有很多朋友来问我如何实现,他们有遇到各种各样的问题,这里就一并写出来和大家一起分享. ListView的操作就一定会涉及到item和Adapter,我们还是先来实现这部分内容. 首先,写个item的xml布局,里

android UI进阶之实现listview中checkbox的多选与记录

今天继续和大家分享涉及到listview的内容.在很多时候,我们会用到listview和checkbox配合来提供给用户一些选择操作.比如在一个清单页面,我们需要记录用户勾选了哪些条目.这个的实现并不太难,但是有很多朋友来问我如何实现,他们有遇到各种各样的问题,这里就一并写出来和大家一起分享. ListView的操作就一定会涉及到item和Adapter,我们还是先来实现这部分内容. 首先,写个item的xml布局,里面放置一个TextView和一个CheckBox.要注意的时候,这里我设置了C

ListView中CheckBox使用问题

因为CheckBox的点击事件优先级比ListView的高,所以当ListView中使用CheckBox会导致ListView的setOnItemClickListener失去响应. 解决的方法:在CheckBox中加入android:focusable="false".使得CheckBox初始的时候没有获取焦点. 假设想在单击CheckBox时响应的是ListView的ItemClick事件能够设置CheckBox的android:clickable="false"

Android listview中使用button解决方法

其实很多东西不是粘贴代码就能解决的,做任何事都要用心做,这样才能晚上睡觉睡得比较踏实. 当你粘贴别人的代码,有时候出bug真的很烦,可是当你明白点原理的时候,能看出问题的实质,解决起来也很得心应手,开始今天的主题.当你的看到这个问题时,你应该知道问题出在哪里了,在listview中使用button(当然不只是button,还有imagebutton等自身响应点击的view),问题出现了,你会发现listview中的item不能点击了,具体是因为什么呢?大多数原因是抢焦点,button抢占了ite

安卓ListView中CheckBox的使用(支持Item列表项的删除,全选,全不选)

ListView 自身提供了 CheckBox 只需要添加一行代码 getListView().setChoiceMode(ListView.CHOICE_MODE_MULTIPLE); 但是这种实现想要自己控制操作起来局限很多.所以我选择了自己添加CheckBox的方式.可以支持列表项的全选,删除,并保持数据的对应关系不会乱. 列表中的CheckBox选中状态与一个Map进行绑定,利用 adapter.notifyDataSetChanged();来更新界面. 效果如下: 下面直接看代码把.

Android基础入门教程——2.4.5 ListView之checkbox错位问题解决

Android基础入门教程--2.4.5 ListView之checkbox错位问题解决 标签(空格分隔): Android基础入门教程 本节引言: 作为ListView经典问题之一,如果你尝试过自定义ListView的item,在上面带有一个checkbox的话,那么 当你的item数超过了一页的话,就会出现这个问题,下面我们来分析下出现这种问题的原因,以及如何来 解决这个问题! 1.问题发生的原因: 这是网上找来的一幅关于ListView getView方法调用机制的一个图 上图中有一个Re