首页 > 其他 > 详细

HeaderViewListAdapter cannot be cast to listAdapter问题原因及解决办法

时间:2015-12-13 12:25:48      阅读:158      评论:0      收藏:0      [点我收藏+]

[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呢?

只需将

 

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的,在调用时需要注意。

 

HeaderViewListAdapter cannot be cast to listAdapter问题原因及解决办法

原文:http://www.cnblogs.com/misybing/p/5042482.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!