2.4.8 ListView之checkbox错位问题解决
分类 Android 基础入门教程
本节引言:
作为ListView经典问题之一,如果你尝试过自定义ListView的item,在上面带有一个checkbox的话,那么 当你的item数超过了一页的话,就会出现这个问题,下面我们来分析下出现这种问题的原因,以及如何来 解决这个问题!
1.问题发生的原因:
这是网上找来的一幅关于ListView getView方法调用机制的一个图
上图中有一个Recycler的东东,平时我们ListView上可见的Item处于内存中,而且他的Item则放在 这个Recycler中,第一次加载item时,当前页面中的convertView都为NULL,当滚出屏幕,这是时候 ConvertView不为空,所以新的一项会复用这个ConvertView! 我们可以写个简单的例子,跟下log,下面是运行后的一些Log图!
从图中看出,Postion从12开始,ConvertView就不为空了,具体这里代表的是什么, 我也不知道,目测要走源码…我们知道这里ConvertView会缓存就好,就是因为这个原因 造成的checkbox错位,所以第一个解决方式就是,不重用这个ConvertView,或者 说每次getView都将这个ConvertView设置为null,但是如果需要显示的Item数目巨大的话, 这种方法就会显得非常臃肿,一般实际开发我们使用的是下面的解决方法: 找个东东