android 中listview集成checkbox后使用的一些发现

listview中集成textview和checkbox应该是很普遍的现象,现在手头的项目在实现的过程中出现一个问题,就是checkbox的选中状态在关东新增后出现的那些checkbox 变成和滚动显示之前的那些选中状态一样了 。

通过跟踪后台的处理方法,发现扩展BaseAdapter后 getView 方法中的一些以前没有注意的情况,当进入第一次进入 listview 的页面的时候,初始化输出是如下的

 

 

05-31 02:04:27.682: DEBUG/adp(763):  view 0 is  null
05-31 02:04:27.714: DEBUG/adp(763):  view 1 is  android.widget.RelativeLayout@44f614d0
05-31 02:04:27.723: DEBUG/adp(763):  view 2 is  android.widget.RelativeLayout@44f614d0
05-31 02:04:27.723: DEBUG/adp(763):  view 3 is  android.widget.RelativeLayout@44f614d0
05-31 02:04:27.733: DEBUG/adp(763):  view 4 is  android.widget.RelativeLayout@44f614d0
05-31 02:04:27.733: DEBUG/adp(763):  view 5 is  android.widget.RelativeLayout@44f614d0
05-31 02:04:27.743: DEBUG/adp(763):  view 6 is  android.widget.RelativeLayout@44f614d0
05-31 02:04:27.743: DEBUG/adp(763):  view 7 is  android.widget.RelativeLayout@44f614d0
05-31 02:04:27.782: DEBUG/adp(763):  view 0 is  android.widget.RelativeLayout@44f614d0
05-31 02:04:27.794: DEBUG/adp(763):  view 1 is  null
05-31 02:04:27.823: DEBUG/adp(763):  view 2 is  null
05-31 02:04:27.843: DEBUG/adp(763):  view 3 is  null
05-31 02:04:27.864: DEBUG/adp(763):  view 4 is  null
05-31 02:04:27.884: DEBUG/adp(763):  view 5 is  null
05-31 02:04:27.903: DEBUG/adp(763):  view 6 is  null

 

 

从这段log输出可以看到1-6应该是进行过初始化的了,至于后面为什么会变成 null,我也没有去深入研究呢。然后随便选中几个checkbox

当我继续向下滚动的时候 下面的checkbox和上面的postion相差不多的位置上 都是被选中状态的,给我的感觉就是这钱的那些组件被复用了 ,但是复用的规则 因为没有看人家的源代码,所以现在也不清楚 但是鉴于这种情况 我只好采用手动初始化checkbox状态,我在扩展的adapter里面多用了 

private HashSet checkedset=new HashSet();

 

getView的时候在最后进行一次初始化

holder.compCheck.setChecked(checkedset.contains(holder.compCheck.getTag()));

 

在进行初始化后,能够保证只显示正确的勾选状态了,至于这种情况的原因,如果有人知道可以告诉我,我有时间也会自己找赵答案看看的。

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值