解决Listview页脚RemoveFooterView报java.lang.ClassCastException错问题
2016-02-15 11:44
309 查看
如题,在做ListView滚动到底部时自动加载下一页数据时出现了错误,困扰了还挺久的,网上搜了不少资料,但是还是没明白到底错在哪里。
今天又在处理这个问题的时候突然之间悟出来了。
先看下ListView的setAdapter方法里的部分代码:
public void setAdapter(ListAdapter adapter) {
............
if (mHeaderViewInfos.size() > 0|| mFooterViewInfos.size() > 0) {
mAdapter = new HeaderViewListAdapter(mHeaderViewInfos, mFooterViewInfos, adapter);
} else {
mAdapter = adapter;
}
............
}
看出点什么没,代码的大致意思是如果ListView没有headerView或者footerView的时候,与listView相关联的Adapter就是传进来的参数Adapter,如果有,就将原来的Adapter包装成HeaderViewListAdapter。
至此大致明白了自己错在哪里了,因为一开始第一页的时候用不到footerView,所以一开始创建的Adapter并不是HeaderViewListAdapter,然后在加载下一页的时候有添加和删除footerView的操作,但是当前的Adapter并不是HeaderViewListAdapter,导致错误发生,报了java.lang.ClassCastException错误。
明白了错误,也就有了相应的解决方案了。在setAdapter执行前如果之后需要headerView或者footerView的,可以先add到ListView里,如果不需要一开始的时候显示,可以在setAdapter后立刻remove掉就好了,这样子处理主要是为了让创建的是Adapter是HeaderViewListAdapter。
今天又在处理这个问题的时候突然之间悟出来了。
先看下ListView的setAdapter方法里的部分代码:
public void setAdapter(ListAdapter adapter) {
............
if (mHeaderViewInfos.size() > 0|| mFooterViewInfos.size() > 0) {
mAdapter = new HeaderViewListAdapter(mHeaderViewInfos, mFooterViewInfos, adapter);
} else {
mAdapter = adapter;
}
............
}
看出点什么没,代码的大致意思是如果ListView没有headerView或者footerView的时候,与listView相关联的Adapter就是传进来的参数Adapter,如果有,就将原来的Adapter包装成HeaderViewListAdapter。
至此大致明白了自己错在哪里了,因为一开始第一页的时候用不到footerView,所以一开始创建的Adapter并不是HeaderViewListAdapter,然后在加载下一页的时候有添加和删除footerView的操作,但是当前的Adapter并不是HeaderViewListAdapter,导致错误发生,报了java.lang.ClassCastException错误。
明白了错误,也就有了相应的解决方案了。在setAdapter执行前如果之后需要headerView或者footerView的,可以先add到ListView里,如果不需要一开始的时候显示,可以在setAdapter后立刻remove掉就好了,这样子处理主要是为了让创建的是Adapter是HeaderViewListAdapter。
相关文章推荐
- RxJava 平常使用
- [Java] 通过XPath获取XML中某个节点的属性
- JDK设置环境变量(classpath)时:dt.jar ,tool.jar,rt.jar的作用
- RXJava学习笔记(1)
- [Java] 获取当前Project所在的路径
- JDK官网下载,并安装、配置环境变量
- Java 8十个lambda表达式案例
- Struts2 语法--异常处理
- springmvc核心类及处理流程
- 解读Java Class文件格式
- eclipse 重构收藏
- JAVA用户自定义事件监听完整例子
- java中的缓存技术该如何实现
- 传智播客168期JavaEE就业班(第七天 Java基础加强)
- myeclipse 快捷键
- java中生成不重复随机的数字
- Java多线程编程简明教程(1) - Future模式与AsyncTask
- struts2语法--error页面如何捕获?
- JAVA反射机制的应用场景
- RxJava系列之二:RxJava简介