HeaderViewListAdapter cannot be cast to listAdapter问题原因及解决办法
2015-12-13 11:40
435 查看
[o]
在listView中添加leaderView 和footerView的时候要注意在setAdapter之前调用,不然会报如下异常:
listAdapter cannot be cast to android.widget.HeaderViewListAdapter
此时,listView的表头表尾已作为第一项和最后一项加入listView,可以正常显示及随条目上下滚动。
但在操作该表listItem的时候会报如下错误:
java.lang.ClassCastException: android.widget.HeaderViewListAdapter cannot be cast to [package_name].listAdapter
会发现该错误与上述错误描述刚好相反,其实它们本质上是同一个问题。上一个是在setAdapter之前要set表头表尾,而此时要调用listAdapter,但因为表头表为加入后该adapter被封装成为HeaderViewListAdapter
那么要如何取到原来的Adapter呢?
只需将
改为
由此也可以明确,当增加header或者footer时,lv_data.getAdapter()).getWrappedAdapter().getCount()与 ((HeaderViewListAdapter)listview.getAdapter()).getWrappedAdapter().getCount() 是相差1的,在调用时需要注意。
在listView中添加leaderView 和footerView的时候要注意在setAdapter之前调用,不然会报如下异常:
listAdapter cannot be cast to android.widget.HeaderViewListAdapter
此时,listView的表头表尾已作为第一项和最后一项加入listView,可以正常显示及随条目上下滚动。
但在操作该表listItem的时候会报如下错误:
java.lang.ClassCastException: android.widget.HeaderViewListAdapter cannot be cast to [package_name].listAdapter
会发现该错误与上述错误描述刚好相反,其实它们本质上是同一个问题。上一个是在setAdapter之前要set表头表尾,而此时要调用listAdapter,但因为表头表为加入后该adapter被封装成为HeaderViewListAdapter
那么要如何取到原来的Adapter呢?
只需将
MyAdapter myadapter = ( MyAdapter) listview.getAdapter();
改为
HeaderViewListAdapter hAdapter = (HeaderViewListAdapter) listview.getAdapter(); MyAdapter myadapter = ( MyAdapter) hAdapter.getWrappedAdapter();
由此也可以明确,当增加header或者footer时,lv_data.getAdapter()).getWrappedAdapter().getCount()与 ((HeaderViewListAdapter)listview.getAdapter()).getWrappedAdapter().getCount() 是相差1的,在调用时需要注意。
相关文章推荐
- 如何为VMware vcenter server的网卡eth0配置静态IP?
- 大端小端模式
- Spring Boot 属性配置和使用
- Unity UGUI——Rect Transform包(Anchors)
- 关于Java Script中声明提前的问题
- UIUI--分栏控制器
- HDU 1035 Robot Motion 模拟
- 深入解析开源项目之Universal-Image-Loader(一)框架篇
- js-window对象的方法和属性资料
- 【openjudge】迷宫
- Python tutorial摘要1
- 东莞血汗工厂倒闭,机器人工厂上位
- Scala 高阶函数
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- BestCoder Round #66 (div.2)
- 服务器虚拟化的十大谎言
- T4 Temple使用方法
- UI-第五讲:UIControl及其子类
- Java连接MongoDB3.0+