浏览 7544 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2012-01-05
今天在为ExpandableListView addHeaderView(加头view),运行报错: Cannot add header view to list -- setAdapter has already been called.
提示我已经设置了适配器,原来addHeaderView(View v)方法 只能在父控件 setAdapter之前调用!
仔细想想也很容易解释,addHeaderView是为list加入 头视图,而setAdapter是为控件匹配内容。哪有先匹配了内容,再插入view的道理,皮之不存毛将焉附?
声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2012-01-12
header/footer View是ListView的设计缺陷。
查看setAdapter源码可得知。若在之前设置了header和footer,则setAdapter会将传入的Adapter包装成为一个FixedViewAdapter。 这种方式灵活性欠佳哉。 |
|
返回顶楼 | |
发表时间:2012-03-05
求解决方案
|
|
返回顶楼 | |
发表时间:2012-03-05
addHeaderView(View v)方法 在父控件 setAdapter之前调用啊!
|
|
返回顶楼 | |
发表时间:2012-03-05
libo19881179 写道 addHeaderView(View v)方法 在父控件 setAdapter之前调用啊!
但是 最开始的时候 不需要他显示出来的。所以不能先add 考虑将需要加进来的view 设置为 gone 再加入 , 但还是占据了区域 |
|
返回顶楼 | |
发表时间:2012-03-06
可以通过setLayoutParam来解决
|
|
返回顶楼 | |
发表时间:2012-03-07
pejaming 写道 可以通过setLayoutParam来解决
据我所知这个问题无解,通过setLayoutParam这个我还真不知道。楼上能否介绍一二?万分感谢 |
|
返回顶楼 | |