android 解决listview中checkBox错位选择
2011-11-04 16:58
316 查看
假如ListView,分成2页(或者设置数据可以纵向拉,可隐藏),每页3条数据,每个Listview的Item 里面有个checkBox,现在,当我选择第一页的前两天数据,翻到第二页,竟然第二页后两条数据也选中了,这是绝对不允许的。经过本人的N次调试,发现public View getView(int position, View convertView, ViewGroup parent)传进来的convertView 竟然产生多次重用。解决方案:当选中checkedBox时候,我们用一个List来保存该checkBox的position。然后在每次产生View时取得传来的convertView赋值为null,再遍历List里保存的checkBox的位置,当在数组内时,checkBox置为选中,问题解决了。
该问题有两种解决方案,个人目前所实现了的。
1.用HashMap保存checkbox的状态值。
HashMap<Integer, Boolean> state = new HashMap<Integer,Boolean>();
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
// TODO Auto-generated method stub
if(isChecked)
{
state.put(position, isChecked);
System.out.println("复选框以选中,选中的行数为:" + temp_position);
}else{
state.remove(position);
}
}
在getView()方法里面: holder.cbox.setChecked(state.get(position)==null? false : true);
2.(不推荐使用,因为会产生许多垃圾对象)
public View getView(int position, View convertView, ViewGroup parent)在每次传进convertView时候,设为null。
然后每调用一次getView就产生一个view对象。
该问题有两种解决方案,个人目前所实现了的。
1.用HashMap保存checkbox的状态值。
HashMap<Integer, Boolean> state = new HashMap<Integer,Boolean>();
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
// TODO Auto-generated method stub
if(isChecked)
{
state.put(position, isChecked);
System.out.println("复选框以选中,选中的行数为:" + temp_position);
}else{
state.remove(position);
}
}
在getView()方法里面: holder.cbox.setChecked(state.get(position)==null? false : true);
2.(不推荐使用,因为会产生许多垃圾对象)
public View getView(int position, View convertView, ViewGroup parent)在每次传进convertView时候,设为null。
然后每调用一次getView就产生一个view对象。
相关文章推荐
- Android 解决listview中checkBox错位选择
- Android基础入门教程——2.4.5 ListView之checkbox错位问题解决
- 【转】Android 带checkbox的listView 实现多选,全选,反选----解决checkbox错位问题
- Android入门教程三十八之ListView的checkbox错位问题解决
- 完美解决Android在listview添加checkbox实现单选多选操作问题
- Android ListView中怎么解决CheckBox复用的问题
- Android Listview与Checkbox结合实现选择,删除,显示选择结果
- android 获取listview checkbox选择的值
- Android之ListView图片加载错位问题解决
- android listview 异步加载图片并防止错位及解决ListView滚动后内容重复的问题
- ListView中带有CheckBox时,解决CheckBox重复选择问题的一个不错方案
- android ListView/Recyclerview滚动时自动调用onCheckedChanged导致CheckBox状态混乱的解决办法
- android listview 有 checkbox 时点击没反应 解决办法
- android中ListView添加CheckBox控件实现选择
- android 当ListView滚动时自动调用 onCheckedChanged 导致CheckBox 状态不停变化 的解决办法
- Android之记录ListView的checkbox选择位置问题
- 完美解决ListView和CheckBox焦点冲突及复用时CheckBox错位等一系列问题
- Android 解决某些机型CheckBox自定义按钮图片时发生的错位问题
- Android CheckBox显示错位的解决 && SparseBooleanArray的使用
- 美解决Android在listview添加checkbox实现单选多选操作问题