Android GridView控件第一个item不响应或显示不正常或事件诡异
2016-03-24 12:49:44  By: dwtedx

在使用Android的GridView控件时、很多人都会碰到这么个奇怪的问题:整个GridView中、所有item的响应都没问题、只有第一个item不响应、或是显示不正常、或是点完第一个item后不响应但再点其他的item后其他item会响应、同时第一个item也响应了(超诡异的现象……)


至少就我所看到的、出现第一个item有问题的情况、一般都有使用BaseAdapter、而出问题的地方一般都是getView的书写有问题、稍微整理归纳一下可能的解决方法、供大家参考:

检查getView方法中是否有动态设置LayoutParams的操作、如果有、那么注意不能new 一个新的LayoutParams、而应该调用getLayoutParams获取已有的LayoutParams


如果getLayoutParams返回为空或是返回的LayoutParams不是AbsListView.LayoutParams、那就在getView之前用setLayoutParams方法设置一下、listener响应有问题:尝试使用GridView的onItemClickListener、如果是onItemClickListener响应有问题、检查setOnItemClickListener是否在setAdapter之后


尽量不要采用给每个item的View加onClickListener的方式、如果必须使用该方式、并且采用了ViewHolder的写法复用View、那么需要注意加onClickListener的位置、是加在convertVew==null的地方还是外面我就记不清了、我没试过、只看到有一个帖子说过这个


如果还有问题、我看到的可能的解决方法有(没试过、不确定是否可行、但有人在相关帖子里提到的各种方法)


(1)不用ViewHolder写法、每次getView都重新创建新的View


(2)GriView设置背景色为透明


但就我感觉、想要动态设置GridView的item宽、高、但直接new LayoutParams导致出问题的出现次数比较多、大家注意一下、具体为啥会这样就没细究了、有兴趣的童鞋欢迎讨论一下


如果实在解决不了的话、就不要用GridView了、直接使用LinearLayout替换GridView、自己写一个双重循环去排列和行、然后使用addView添加到LinearLayout里面、虽然会有麻烦、但也是一种办法

若资源对你有帮助、浏览后有很大收获、不妨小额打赏我一下、你的鼓励是维持我不断写博客最大动力

想获取DD博客最新代码、你可以扫描下方的二维码、关注DD博客微信公众号(ddblogs)

或者你也可以关注我的新浪微博、了解DD博客的最新动态:DD博客官方微博(dwtedx的微博)

如对资源有任何疑问或觉得仍然有很大的改善空间、可以对该博文进行评论、希望不吝赐教

为保证及时回复、可以使用博客留言板给我留言: DD博客留言板(dwtedx的留言板)

感谢你的访问、祝你生活愉快、工作顺心、欢迎常来逛逛


快速评论


技术评论

  • 该技术还没有评论、赶快抢沙发吧...
DD记账
top
+