listview添加header时的注意事项
2015-11-13 15:01
344 查看
LayoutInflater mInflater = (LayoutInflater) getActivity() .getSystemService(Context.LAYOUT_INFLATER_SERVICE); LinearLayout loadMoreLayout = (LinearLayout) mInflater.inflate( R.layout.header, null); 如上方法,这里的header是我为listview准备的header布局,里面xml情况是这样 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <com.scdl.zny.view.SlideShowView android:id="@+id/ssv" android:layout_width="fill_parent" android:layout_height="250dp"></com.scdl.zny.view.SlideShowView> </LinearLayout>在添加之后程序一直奔溃显示无法成功
LinearLayout loadMoreLayout = (LinearLayout) mInflater.inflate( R.layout.header, this);这个是本来的方法下面看一段lsitview的源码
/** * The list is empty. Clear everything out. */ @Override void resetList() { // The parent's resetList() will remove all views from the layout so we need to // cleanup the state of our footers and headers clearRecycledState(mHeaderViewInfos); clearRecycledState(mFooterViewInfos); super.resetList(); mLayoutMode = LAYOUT_NORMAL; } private void clearRecycledState(ArrayList<FixedViewInfo> infos) { if (infos != null) { final int count = infos.size(); for (int i = 0; i < count; i++) { final View child = infos.get(i).view; final LayoutParams p = (LayoutParams) child.getLayoutParams(); if (p != null) { p.recycledHeaderFooter = false; } } } }
这里的 mFooterViewInfos 实际上就是我们添加的Footer view的一个列表。代码里循环处理每个footer view,而在getLayoutParams()时,ListView要求必须是AbsListView的LayoutParams,而在我们自己的代码中:LinearLayout loadMoreLayout = (LinearLayout) mInflater.inflate( R.layout.header, null);,这里的this是FrameLayout,所以才抛出异常的。
所以解决办法很简单,就是LinearLayout loadMoreLayout = (LinearLayout) mInflater.inflate( R.layout.header, null);this,改为null就行
相关文章推荐
- 一步步教你OpenStack安装与配置
- UML画图工具astah。
- springmvc 前端控制器源代码分析
- JAVA的静态变量、静态方法、静态类
- IOS自定义打印日志
- 动态改变对话框可调整大小属性
- Ruby-mixin机制和Java接口
- 河北网络营销师
- Android属性动画完全解析(中),ValueAnimator和ObjectAnimator的高级用法
- PHP一些常用的字符串函数
- 线性判别分析(Linear Discriminant Analysis)
- 使用nsenter进入Docker容器
- javascript时间函数
- 使用最新最酷的安卓开发技术
- 你这么真诚,一定是骗子!
- Linux pipe函数
- 18款jquery抽屉式手风琴导航特效代码分享
- 解决eclipse中logcat不显示log的问题
- jetty访问jsp页面出现PWC6345: There is an error in invoking javac. A full JDK (not just JRE) is required
- (转)Linux系统下proc目录详解