首先,自我介绍下,本人从事Android开发不久,so...经验还是远远谈不上高深,仅仅是初入茅庐,水平有限,不免有误,请各位(读者、专业人士)指出,不胜感激……以下只是自己实际开发中遇到的问题(顺便吐槽下国内各大搜索平台.呵呵,不想解释,有时遇到问题在网上搜索几天都找不到一个能说到点子上的,即使很多帖子都是相互copy相互借鉴,至于为什么无力解释,就搜索模式来说如果前者还不转型,不就将来必然会被新的取代,可惜我大Google何时归?甚是思念....)
好,我们切入正题.今天为大家讲一下 关于Listview 如何添加头底部问题
addHeaderView()方法:主要是向listView的头部添加布局
addFooterView()方法:主要是向listView的底部添加布局
举例:
1:比如我们想在listview 上面添加一个ViewPager 图片切换的问题
2:比如我们在listview添加一个头部框(纯填充布局或者图片等) 今天我们重点讲下这个问题 因为两个问题本质是一样的
3:还有其他 等以后开发遇到后我在一 一列举
针对于第二种问题: 是我时间项目中开发遇到的 需求就是 : 在标头布局和listview之间会有一个小型头部匡 随着listview向上拉头布局渐渐消失 当然很多人看到这里都觉得这是一个特别简单问题,那么我只想说作为一个初学者来说,就是这个问题 可能也会困惑我们几天. 解决如下:
首先我们肯定要会使用Listview 这点无需多说, 对Listview 的adapter机制也要了解;如果这些懂了 我们接着看
不懂的,请学习后再来.
1:如何获取的头布局:
例如我们想要添加一个 ImageView
布局初始化时获取我们要注入的头布局
拿到我们要添加的头布局 这里我们按照只添加一个头布局算 头布局包含一个填充ImageView
可能需求中我们还会遇到 头布局中有可能会有Button TextView 等 其实道理是一样的 如果这样 你需要注意的是如何解决Button点击和listview条目点击冲突问题 这些都不难 应该能搜到 这里我都不说明了 以后有时间再整理一下.
重点来了
2:何时何地我们去添加这个头布局
看到上图了吧 我是在setAdapter时候addHeaderView 这里需要重点注意的是mListview.addHeaderView一定要放在mListview.setAdapater 前面
原因: 如果讲细点话 说真的对于初学者来说一时半会无法接受 也比较懵逼 那么现在你就简单的记住因为listview在adapter的之
前会检查时候添加了头布局 如果有就添加没有就不添加 所以addHeaderView必须要放在setAdapter之前 这样理解应该懂了吧
这些都是android运行机制 没不要搞太懂 以后见多了 自己再去了解 会更好 现在只要懂大概意思就行 深奥的慢慢学习.
图上勾选三个参数 第一个就是你要添加的头布局 第二个不管 null 第三个是 你是否让添加的头布局可点击 false是不可点击;你会不会问我可点击怎么办?
3:点击事件处理
这里的点击事件是指listview item的点击事件,当我们处理完上面两步之后 感觉很简单 想要的效果也基本达到了
但是有个情况要说明 很多情况下 我们listview中的数据是动态获取的 然后点击跳转另一个页面,然后突然发现.
我擦,数据不对, 貌似错位了,想了半天知道原因出在哪里就是不知道怎么解决,
其实道理很简单 我们自定义adapter里面的getitem方法里面返回的position是不包括header的,是我们自定义adapter中数据position下标从0开始,也就是说与我们传进去的list的位置是一样的,好吧这个为也很绕 ,说白了就是返回的postion不包括header 而
listView的条目包含了 所以位置错位了
那么如何解决?????????????\
哈哈哈是不是很简单 就在点击事件中加一句话 让postion-1 就行了 因为你添加了一个头部 这个头部是postion所在的0的位置 (说白了就是我点击的和返回的postion不一样 这个自己想想) 那么你会不会问我如果添加两个头布局怎么处理??????????