现在的位置: 首页 > 综合 > 正文

android.widget.HeaderViewListAdapter canot be cast xxxx

2018年01月18日 ⁄ 综合 ⁄ 共 722字 ⁄ 字号 评论关闭

用listview设置header或footerview,通常发生该异常。

如果你没有发生,那是碰巧。但是你可能不知道原因。

如果在listview.setAdapter(adapter)方法之后 添加头或尾view,

即addHeaderView或 addFooterView,

那么在你listView.removeHearderView或removeFooterView时就会报该异常。

在Listview的源码中如果设置了adapter,那么它会强转成HeaderViewListAdapter,所以就会报错。

if (mAdapter != null && ((HeaderViewListAdapter) mAdapter).removeHeader(v)) {
     if (mDataSetObserver != null) {
         mDataSetObserver.onChanged();
     }
     result = true;
}

解决方案:

1、

在setAdapter之前调用addHeaderView或addFooterVeiw

2、

									CommentAdapter adapter = null;
									if(lv_comment.getAdapter() instanceof HeaderViewListAdapter){
										HeaderViewListAdapter listAdapter = (HeaderViewListAdapter) lv_comment.getAdapter();
										adapter = (CommentAdapter) listAdapter.getWrappedAdapter();
									}else{
										adapter = (CommentAdapter) lv_comment.getAdapter();
									}

抱歉!评论已关闭.