Android ListView在切换分类的时候发生错误.数组越界

描述一下场景:

   菜单栏上有若干分类,点击每一个分类,ListView下分根据分类显示出相应的内容.

--------------------------

1.切换分类时出现异常.描述如下:

    E/AndroidRuntime(8131): java.lang.IndexOutOfBoundsException: Invalid index 11, size is 0

    E/AndroidRuntime(8131): at java.util.ArrayList.throwIndexOutOfBoundsException(ArrayList.java:257)

    E/AndroidRuntime(8131): at android.widget.HeaderViewListAdapter.isEnabled(HeaderViewListAdapter.java:164)

可能的原因是这样的:

   我切换分类的时候,ListView要先清空,然后再ListView再滚动的时候记下了下一次的Index.再去加载的时候就出现了IndexOutOfBoundsException. 所以,我在切换分类的时候加上

mAnnouncementLv.setAdapter(mBulletinAdapter);

加上这个就OK,不报边界溢出错误了... 

但时运不济,命途运多舛.通往成功的道路从来都不是一帆风顺地.当然又报别的错了

---------------------------

场景描述:

由于是分部加载,所以加载到底部时会出现一个正在加载的FooterView.就是在去掉FooterView时,报错了.

2. 去除footerView时的错误

异常如下:

E/AndroidRuntime(8234): java.lang.ClassCastException: com.gpcsoft.Announcement.Adapter.BulletinAdapter

E/AndroidRuntime(8234): at android.widget.ListView.removeFooterView(ListView.java:463)

E/AndroidRuntime(8234): at com.gpcsoft.Announcement.SubscriptionActivity.onScroll(SubscriptionActivity.java:285)

在去除FooterView的时候出现了类型转换异常... ...这是怎么回事??

上网查到了这么一段话

添加,移除ListView的headerView或者是footerView需要注意的地方?

      添加:关于addHeaderView方法文档上有这么一句话,“Call this before calling setAdapter”,在调用这个方法之前,先要设定ListView的Adapter。addFooterView方法同样

      移除:用到了系统提供的removeHeaderView或者removeFooterView方法,虽然文档上没有说明,但是调用这个方法应该在setAdapter之后。

这是之前就遇到过了,当时把addFooterView放在之后,结果没有效果.

那么由此,是Adapter报出来的也就不足为奇了,因为更换过Adapter,那我之后先去掉Adapter再添加上去了.

再每次清除ListView时变成这样:

mPageNum = 1;

mBulletinList.clear();

if(mAnnouncementLv.getFooterViewsCount()>0){

mAnnouncementLv.removeFooterView(mLoadLayout);

}

mAnnouncementLv.addFooterView(mLoadLayout);

mAnnouncementLv.setAdapter(mBulletinAdapter);

OK,不报错了... ...

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值