关于ListView加入HeaderView之后,点击条目时获得position参数移位的BUG修正
来源:互联网 发布:mac dashboard是什么 编辑:程序博客网 时间:2024/05/29 02:31
今天遇到一个问题,在ListView的时候,要在首部加一个轮播图组件,调用的是ListView的addHeaderView(View v, Object data, boolean isSelectable)方法,这个方法可以把一个view放置到Listview的顶部显示,也可以多次调用,使得多个view按照添加的顺序,依次排列在ListView的顶部显示。
这样做了之后是显示是没问题的,但是遇到一个问题就是在ListView的Adapter的构造方法中,要添加ListView的条目点击事件:mListView.setOnItemClickListener(this);
然后在Adapter里面实现onItemClick(AdapterView<?> parent, View view, int position,long id)方法,在通过position取数据的时候发现一个问题,就是点击的条目错位了,点击一个条目,结果响应事件变成了下一个条目对应的事件。
经过探查之后发现,本来ListView条目的position是从0开始计算的:0,1,2...这样,但是添加了一个Header之后,position变成了从1开始,于是需要手动修正一下这个postion的值。
好在Android中有提供一个对应的API来得到HeaderView的数量,那就是ListView中的一个方法:getHeaderViewsCount(),这个方法可以得到这个ListView添加了多少个HeaderView,然后我们需要做的只是在使用position之前,修正一下:
于是我在重写Adapter的getItem方法时加入如下代码:
ok,问题解决。
事实往往不是自己想的那样,程序崩溃了。。。
再去找原因,终于发现最终的解决方案了。实际发现不管listview有没有headview,对于adapter并不知道,所以adapter的position按照正常顺序。所以
大家应该知道该怎么改了吧?需要在listview的onitemclicklistener中修正postion,然后调用adapter的getItem方法即可:
ok,问题最终解决了!
- 关于ListView加入HeaderView之后,点击条目时获得position参数移位的BUG修正
- 关于ListView加入HeaderView之后,点击条目时获得position参数移位的BUG修正
- 如何让listView加入的HeaderView不可点击
- 如何让listView加入的HeaderView不可点击
- 如何让listView加入的HeaderView不可点击(转)
- 关于ListView 条目点击混乱的问题
- 关于ListView的HeaderView
- 关于ListView的HeaderView
- listView中添加了headerView时,使用position的注意事项
- android如何让listView加入的HeaderView或FooterView不可点击
- NavigationView 中 获得headerView 的点击事件
- 关于ListView中点击条目不生效的解决办法
- listview点击条目进行跳转,把position和具体的实体进行对应
- listView点击条目跳转并带参数
- 使ListView的headerView,footerView不可点击
- 修正IE6不支持position:fixed的bug
- 修正IE6不支持position:fixed的bug
- 修正IE6不支持position:fixed的bug
- LeetCode#4* Median of Two Sorted Arrays
- $.ajax()方法在请求成功后老是执行error中的函数
- lintcode 字符串查找(strStr) (Java)
- maven的settings.xml配置详解
- Android 事件总线EventBus
- 关于ListView加入HeaderView之后,点击条目时获得position参数移位的BUG修正
- NOIP 2011 Senior 3
- java实现人民币数字转换成中文
- caffe+windows+vs2015 (无GPU)环境配置
- TCP建立连接的三次握手过程
- UITextView中打开或禁用复制,剪切,选择,全选等功能
- 投影与三维视觉——本征矩阵和基础矩阵
- UIGeometry、UIDrawCall和UIWidget
- Tire树