listview及gridview常见问题总结

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.。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值