当 ListView 中的行数 < 10 的时候 ListView中的getChildCount()并不总是等于ListAdapter中的数据行数。当手机一屏显示不了所有数据时(需要翻页),getChildCount()就等于手机一屏幕所显示的行数,小于ListAdapter中的数据行数。而ListView的getCount()是与ListAdapter中的数据行数相同。 当光标下移到屏幕最底部,新显示出来的View,最初的3个(不知道为什么是3个),在Adapter中调用getView(int position, View convertView, ViewGroup parent)方法中,会判断 convertView 为null,而再有新的View就会发现convertView不为空,所以新显示的View其实使用了之前某个View的对象。这就造成了状态可能混乱。比如第一行的checkbox点选时,第11行的也同时会被点选,同样第 21 ,31 ,etc.
所以可以
1) getView(int position, View convertView, ViewGroup parent){}
方法每行的开始 写这样一行convertView = null;
2) 用一个List记录你勾选过的每一行的LiseView index
这个时候怎么办呢?我们需要一个可以使 ListView 中的 CheckBox 按我们的意愿选中或取消选中,就得自己来这个 ListAdapter
http://zctya.blog.163.com/blog/static/120917820116593613544/网址:
ListCheckBox.rar 咱自己看源码:
阅读(587) | 评论(0) | 转发(0) |