最近在一个项目中,需要在ListView的item中加入CheckBox,但是遇到的一个问题是上下滑动的时候如果有选择了的CheckBox,就会出现选择项错误的问题,下面将个人的解决方法总结如下;
先说思路:
在ListView的Adapter中,用一个Map保存每一项item的选择状态,在getView方法中,设置Map中保存的某一项的选择状态就实现了状态的保存;
每一项的视图 child.xml
1 |
|
Adapter.java
1 | public class CAdapter extends BaseAdapter { |
MainActivity.java
1 | public class MainActivity extends Activity { |
选择之后反选的效果(右边是点击反选之后的效果):
在上面用到一个比较好的思想就是用类的内部接口向外部调用类暴露本类的一些状态改变时,外部类可能想要获取的数据信息;
延伸思考:上面保存的状态是CheckBox,当需要使用RadioButton的时候,使用方法也是类似的;
但是RadioButton可能会有另一种需求{选择某一项的时候其它项就不选择,也即只选择一项},此种情况其实参考上面全选,反选的实现,实现起来也是比较简单,暂时没时间去写出来测试;