博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android解决添加FootView或HeadView不显示的兼容性问题
阅读量:7244 次
发布时间:2019-06-29

本文共 1842 字,大约阅读时间需要 6 分钟。

测试反馈在OPPO手机下,listview的footview不显示,自己研究一下headview也同样不显示,后来研究了一下解决了这个问题

解决方法如下:

ListView listView = findViewById(listviewId);BaseAdapter adapter = new MyBaseAdapter(Context, Arraylist);View headView = (View) LayoutInflater.from(this).inflate(R.layout.headview, null);View footView = (View) LayoutInflater.from(this).inflate(R.layout.footview, null);listView.addHeadView(headView);listView.addFootView(footView);listView.setAdapter(adapter);// 将设置适配器的操作延后adapter.notifyDataSetChanged();

深度解析:

源代码解析:

ListView.setAdapter(adapter)部分源码:

if (mHeaderViewInfos.size() > 0|| mFooterViewInfos.size() > 0) {
// 如果headView的集合,或者footView的集合不为空,就进行Adapter转换 mAdapter = new HeaderViewListAdapter(mHeaderViewInfos, mFooterViewInfos, adapter); } else { mAdapter = adapter;// 没有执行添加头部和尾部的操作  }

ListView.addFootView()部分源码:

...        // Wrap the adapter if it wasn't already wrapped.        if (mAdapter != null) {
// 执行过了setAdapter(adapter) if (!(mAdapter instanceof HeaderViewListAdapter)) {
// 如果Adapter没进行过转换,就转换 mAdapter = new HeaderViewListAdapter(mHeaderViewInfos, mFooterViewInfos, mAdapter); } ... }

由以上源码可以看出,无论是先添加FootView还是先setAdapter,mAdapter都会被转换成HeaderViewListAdapter,其中HeaderViewListAdapter和BaseAdapter一样,都是ListAdapter的实现类,是对BaseAdapter的二次封装。

所以很大可能在OPPO的framework源码中,程序小哥在码ListView.addFootView(footview)方法时感觉某行代码没用给注释了:

...        // Wrap the adapter if it wasn't already wrapped.        if (mAdapter != null) {
// 执行过了setAdapter(adapter) if (!(mAdapter instanceof HeaderViewListAdapter)) {
// 如果Adapter没进行过转换,就转换 // mAdapter = new HeaderViewListAdapter(mHeaderViewInfos, mFooterViewInfos, mAdapter);// 这行代码被人无意中注释或删除了 } ... }

好了继续码代码!

转载于:https://www.cnblogs.com/bestcolin/p/5194553.html

你可能感兴趣的文章
samtools和bcftools使用说明
查看>>
OC中使用 static 、 extern、 const使用
查看>>
Code Chef January Challenge 2019题解
查看>>
洛谷P3527 [POI2011]MET-Meteors(整体二分)
查看>>
extjs 点击链接到另一个页面 并激活另一个页面的指定tab
查看>>
JAVA Shallow heap & Retained heap
查看>>
2018"百度之星"程序设计大赛 - 资格赛
查看>>
DGUT_FLY退役贴 && FunCfans毕业总结-竞赛篇
查看>>
[]斯特林数
查看>>
麻省理工学院公开课:经典力学
查看>>
一点声明
查看>>
【百度人脸识别开发套件】开放人脸识别APP及SDK,加速二次开发进程
查看>>
2017京东笔试总结
查看>>
人生真是圆的,从BASIC开始的程序人生,又回到了BASIC,难道。。。。。
查看>>
JavaScript基础语法
查看>>
习题6-4 使用函数输出指定范围内的Fibonacci数
查看>>
代码清单3-10 一个完整的泛型枚举——从0枚举到9
查看>>
myeclipse 编码问题
查看>>
POJ1637 Sightseeing Tour
查看>>
spring数据绑定默认的日期解析格式解析不了yyyy格式
查看>>