天天看点

android adapter下checkbox乱序问题

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行的也同时会被点选,

所以可以

1) getView(int position, View convertView, ViewGroup parent){}

方法每行的开始 写这样一行convertView = null;

2) 用一个List记录你勾选过的每一行的LiseView index

继续阅读