android listview addHeaderView和addFooterView的注意事项
1、 item内如果有button等控件时,在监听listview的onitemclick事件时,焦点会被item内的button、 imagebutton等控件抢走,从而导致在listview设置了onitemclick事件后不会被触发。解决方法是在初始化item的时候屏蔽掉 其内部button等控件的焦点获取,具体方法可以在自定义item的根控件中调用:
- setDescendantFocusability(ViewGroup.FOCUS_BLOCK_DESCENDANTS);
这样就能阻塞字控件抢夺焦点,listview的onitemclick就能被正确触发,同时对item内部的button等控件也没有影响,他们在被点击时照样可以触发自身的点击事件。
2、 当listview需要添加headerview时,可以通过调用listview的addHeaderView(headView, null, false) 方法,该方法还有一个重载方法 addHeaderView(headView);这两个方法的区别是前一个方法可以控制header是否可以被 selected,如果不想被selected则将第三个参数设置成false;
3、 接着上面说的添加header,添加header时调用的addHeaderView方法必须放在listview.setadapter前面,意思很明 确就是如果想给listview添加头部则必须在给其绑定adapter前添加,否则会报错。原因是当我们在调用setAdapter方法时会 android会判断当前listview是否已经添加header,如果已经添加则会生成一个新的tempadapter,这个新的 tempadapter包含我们设置的adapter所有内容以及listview的header和footer。所以当我们在给listview添加了 header后在程序中调用listview.getadapter时返回的是tempadapter而不是我们通过setadapter传进去的 adapter。如果没有设置adapter则tempadapter与我们自己的adapter是一样的。 listview.getadapter().getcount()方法返回值会比我们预期的要大,原因是添加了header。
4、接着上面的tempadapter说,我们自定义adapter里面的getitem方法里面返回的position是不包括header的,是我们自定义adapter中数据position编号从0开始,也就是说与我们传进去的list的位置是一样的。
- @Override
- public View getView(int position, View convertView, ViewGroup parent) {
- // TODO Auto-generated method stub
- Log.i("adapter", "position:"+position); //这个position就是我们数据的真实位置
- }
而listview的onitemclick方法中:
- public void onItemClick(AdapterView
headView和footerView都可以响应onItemClick方法,headView的position为0, footerView的position最大。
不过可以给headView和footerView设置OnClickListener来覆盖OnItemClick,这样,你点击headview或者footerView将触发OnClickListener而不是onItemClick().
android listview addHeaderView和addFooterView的注意事项的更多相关文章
- Android listview addHeaderView 和 addFooterView 详解
addHeaderView()方法:主要是向listView的头部添加布局addFooterView()方法:主要是向listView的底部添加布局 需要注意的是添加布局的时候应该添加从父容器开始添加 ...
- android listview addheaderview viewpager
just set viewPager's onTouchListener,like this: viewPager.setOnTouchListener(new OnTouchListener() { ...
- 问题解决:listview多次调用addHeaderView和addFooterView
情景: 有两个分类,每个分类下的数据用listview显示,分类1需要显示头视图和尾视图,分类2不要显示头视图和尾视图 .两个分类可以来回切换. 实现的步骤: 1. addHeaderView . a ...
- xamarin android listview的用法
listview也许是用的非常频繁的一个控件之一,下面我写一个xamarin的listview栗子,大家尝一尝xamarin android开发的乐趣.原谅我的大小写吧. listview绑定自定义的 ...
- Android ListView 进阶学习
1.使用ListView展示数据结构为二维数组的数据 当我们遇到数据结构是二维数组的需求的时候,我们会首先想到ListView,但是要想实现二维数组,会想到ListView里面嵌套ListView,但 ...
- Android listview viewpager解决冲突 滑动
Android listview viewpager滑动 跳动 冲突解决 ListView中嵌套ViewPage有或者滑动手势冲突解决 在listview 上使用 addHeaderView 在第 ...
- Android ListView相关 头和尾 headView footerView
ListView还可以添加头和尾部,而这头和尾就是View对象, 可以使用listView.addHeadView(view)方法和listView.addFootView(view)方法分别添加头和 ...
- 实现Android ListView 自动加载更多内容
研究了几个小时终于实现了Android ListView 自动加载的效果. 说说我是怎样实现的.分享给大家. 1.给ListView增加一个FooterView,调用addFooterView(foo ...
- android listview的HeadView左右切换图片(仿新浪,网易,百度等切换图片)
首先我们还是看一些示例:(网易,新浪,百度) 显示效果都不错,可是手感就不一样了,百度最棒,网易还行,新浪就操作很不好,这里我说的是滑动切换图片.自己可以测试一下.不得不说牛叉的公司确实有哦牛叉的道理 ...
随机推荐
- Two Cakes
It's New Year's Eve soon, so Ivan decided it's high time he started setting the table. Ivan has boug ...
- bae3.0第四步 第一个polls系统
1.创建自己的app 进入新建的blog工程目录,执行其下面的manage.py来创建polls应用,命令为: python manage.py startapp polls2.定义app的model ...
- url出现特殊字符,需要进行编码
1) 网络访问请求:中文空格字符编码/解码 stringByAddingPercentEscapesUsingEncoding(只对 `#%^{}[]|\"<> 加空格共14个字 ...
- CS231n笔记列表
课程基础1:Numpy Tutorial 课程基础2:Scipy Matplotlib 1.1 图像分类和Nearest Neighbor分类器 1.2 k-Nearest Neighbor分类器 1 ...
- php实现oracle操作
<?php function Query($sql,$prms){ $db = " (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = ...
- mybatis association表关联与rowbounds共同使用时的异常及其解决方案
按照mybatis手册中所说的,association有两种实现方式,嵌套查询和嵌套结果映射.如手册中所述,select方式会带来N+1次查询的问题,考虑到效率问题的话建议使用嵌套结果映射.但是在结合 ...
- L2-005. 集合相似度(set使用)
L2-005. 集合相似度 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 给定两个整数集合,它们的相似度定义为:Nc/Nt*1 ...
- Oracle data guard学习
Oracle data guard学习:三思笔记 Data guard 1data guard结构: data guard是一个集合,由一个primary数据库(生产数据库)和一个或多个standby ...
- django的settings.py设置session
############ # SESSIONS # ############ SESSION_CACHE_ALIAS = 'default' # Cache to store session data ...
- 通过phpMyAdmin拿webshell
general_log默认为关闭的,root权限开启后,general_log_file会保存所有的查询语句 所以可以开启general_log,然后设置general_log_file为一个php文 ...