首页 > Android ListView 点击事件异常。

Android ListView 点击事件异常。

ListView 的item布局下方还有一个被GONE的布局,默认是不显示的。 点击lsit info 0 右侧的箭头 显示了下部的布局,但是当listview 向下滑动,下面的item 被复用,造成list info 6 下面的布局也显示了。 请问用什么样的方法可以解决这样的问题?如果可以的话尽量说的详细一点。第一次做这样的页面。


试试recycleview


复用是因为 if (convertView != null) 吧,你可以不用convertView 直接加载,当然这样listview的效率会低。
或者使用expandListview


这个问题是ListView的缓存机制造成的,所以对于AdapterView(ListView的父类)及其子类,修改它的item中的view的操作都不应该在除了适配器(adapter)中的getView函数以外的地方执行。

这里切换下方显示和隐藏,最好实在适配器的数据对象(Entity)中定义一个boolean变量,根据boolean变量的值在getView函数中设置当前这一个item的下方按钮组显示或者隐藏。这样修改的话就是修改指定Position的数据对象中的布尔值,然后调用适配器的notifyDataSetChanged。只不过这里有一个刷新过程,但是多数情况下,这个刷新是看不出来的,除非你的Item中有大量的比较大的图片,然后每个图片都是从网络上获取的。

甚至说,item的点击事件都应该在适配器中自定义,最好不要使用以前的OnItemClickListener。从RecylerView就可以知道,它是没有OnItemClickListener这个接口的。

另外数据适配器这个东西,重复的写多了,还是最好封装一下,所以推荐你看看这篇文章,打造万能适配器

【热门文章】
【热门文章】