异常 java.lang.ClassCastException:cannot be cast to android.widget.HeaderViewListAdapter.的解决方法

来源:互联网 发布:hdmi网络传输器设置 编辑:程序博客网 时间:2024/05/01 20:59
  • 今天,后台开发人员小凡同学测试出了我写的一个页面的bug,这个页面很简单,就是listView加载数据,除了正常的创建adapter和listView设置adapter简单的操作外,我还用到了listView的
    addFooterView(view)方法和removeFooterView(view)方法。很奇怪,在我的手机上都是好好的,可以正常的加载出来。可是在小凡同学的手机上加载数据的时候就直接崩了。所以我用小凡同学的手机测试了一下,看了一下logCat打印的错误日志信息上发现是下面的错误:

这里写图片描述


上面的日志信息显示错误是因为:类型转换的异常,定位后发现出错的地方在listView.removeFooterView(view)方法这一行。一时半会没解决,就去网上搜了一下解决方案。说是因为:


如果你在listView.setAdapter(adapter)之后添加头部布局或者尾部布局,即addHeaderView(view)或 addFooterView(view)。
那么在你listView.removeHearderView或removeFooterView时就会报该异常


而解决方法是:


在listView.setAdapter(adapter)之前调用addHeaderView(view)或addFooterVeiw(view)方法。


确实,我在代码中在listView设置adapter之前调用addHeaderView(view)和addFooterView(view)后再用小凡同学的手机测试,问题就成功的解决了。


说点自己想法:之前没改动代码,我的手机是能成功加载出数据的,而小凡同学的手机就不行。我还认为有可能是手机系统版本的问题。我觉得4.4版本以上的手机应该就可以避免这个问题,但是4.4版本以下的就还没有解决这个问题。因为我的手机系统版本是4.4.4的,而小凡同学的手机系统版本是4.3的。所以为了可以适配所有的手机,就需要在listView设置adapter之前调用addHeaderView(view)和addFooterView(view)。


每天进步一点点!加油!

0 0