这个错误一般是由于使用ListView时使用了列头(addHeaderView)或者列脚(addFooterView)。
不使用列头或者列脚时,listview.getAdapter()得到的adapter和你用setAdapter()设置的adapter一样,使用列头或者列脚后,setAdapter()传入的adapter就被重新赋值成了HeaderViewListAdapter ,这样在对getAdapter()进行强制转换时就会出现转换错误。
修复方法也很简单,把(MyAdapter)listview.getAdapter()改成如下就可以了:
1 |
(MyAdapter) ((HeaderViewListAdapter) listview.getAdapter()).getWrappedAdapter(); |
先将listview.getAdapter()强制转换成HeaderViewListAdapter,然后使用它的getWrappedAdapter()得到原本的adapter。