安卓开发之三-——如何解决在listview中适配checkbox,出现多个条目选中的问题

来源:互联网 发布:mac开机出现禁止符号 编辑:程序博客网 时间:2024/06/05 08:06

在使用listview时候,我们会发现现,当listview的布局中使用到了类似于checkbox等在适配时没有更新数据的控件时,会出现点击item时,有多个条目被选中,那么出现这个这个bug的原因是什么呢?我的理解是这样的:先看一段代码


可以很明显的发现,我们为了优化代码,其实在getView()方法中一共创建几个变量,即假设我们在不滑动条目的时候能够看见5个,那么我们最多就可以创建7个(有两个在视图中只是半个item),而其余的item都是引用了之前创建的对象,这样就避免了创建很多view对象,造成内存的消耗。而checkbox等控件在适配数据时,并未进行更改,那么他们指向的地址也只是同一个对象。那么当你选中一个item时,其他相同的item也会被选中,那么怎么解决呢?

首先我们可以这样做,实例化一个list集合,当我们在listview的onitemClick()选中时,将点击位置的position作为一个对象,存储在list中,点击取消时,又将其从list中remove掉,那么我们在进行适配数据的时候,在getview()方法中,进行判断,如果list中有该位置position这个对象,那么我们就将checkbox选中,否则就不选中。上面的代码中已经展示了在getview()中的操作,下面展示的是在onitemclick()事件中的代码:



0 0
原创粉丝点击