listview及gridview常见问题总结

来源:互联网 发布:php判断变量是否设置 编辑:程序博客网 时间:2024/05/17 00:15

1.gridview的setOnItemSelectedListener事件会无效。在自定义baseAdapter里若自定义界面只有个TextView则设置的高度显示会无效,要在外面加个布局就可以了

2.在自定义的适配器里可以再写个位置pos的变量,给它get和set方法,然后在getView里写个if(postion==getPos()){}else{} 要执行的事情,这样当你只需要在点击某个item触发点击事件,未点击时恢复原来的状态时,就可以在点击item时setPos()然后刷新适配器就可以了。或者也可以把适配器写在要调用的类里,直接判断对于那个位置时要处理的事件

3.在适配器里也可以直接执行刷新的方法

4.在适配器里写了viewHolder缓存,有时会因为缓存的原因而出现问题。例如,listview的每个item需要从网络里加载图片,而有的item没有图片,这时候因为缓存的原因,每次都是重复使用了可见的那几个item的view,在没有图片的那些item也会有之前的图片(在屏幕可见的位置是相同的),而若有图片则会替换掉

5.若要为每个item添加点击事件,而这个事件必须写在适配器里面的时候,最好单独写个点击事件的类,再把位置传进去,如:viewHolder.image_grid.setOnItemClickListener(new GridListener(context,dataList, p));形式。这种方式可以解决因为使用viewHolder缓存而导致的问题。如果你把点击事件直接写在getView里面,因为缓存的原因,而导致每次触发的都是缓存的那几个view的事件,这样就得不到正确的结果了。

6.。。。

0 0
原创粉丝点击