Android List分部加载遇到的一些问题
2013-01-22 09:35
399 查看
描述一下场景:
菜单栏上有若干分类,点击每一个分类,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,不报错了... ...
菜单栏上有若干分类,点击每一个分类,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,不报错了... ...
相关文章推荐
- Android List分部加载遇到的一些问题
- Android Studio远程加载库遇到的一些问题
- 使用glide框架加载图片遇到的一些问题
- android遇到的一些问题
- Android学习遇到的一些问题
- android媒体库添加解码插件遇到的一些问题
- android通过Jni加载so库遇到UnsatisfiedLinkError问题!!!
- 关于android开发遇到的一些问题的解决办法---间断的更新
- android 源码编译遇到得一些问题
- 来谈一下我在使用fo-dicom开源库时遇到的一些问题,这篇主要就是针对从RIS那获取worklist的,希望能帮助那些刚接触这个开源库的。
- Android ListView的中的数据更新时遇到的一些问题的总结
- 新建android项目后,遇到的一些问题的解决方法:
- [Android初级]关于使用universal-image-loader加载imagelist出现图片闪烁的问题
- 浅谈Android手写画板(个性签名)示例及遇到的一些问题
- Android开发过程中遇到的一些问题
- 记录 cocos2dx ios&android遇到的一些注意问题
- android JNI 配置中遇到的一些问题
- Android WebView 加载网页遇到的问题
- webservice和android通信遇到的一些问题
- 记录 cocos2dx android遇到的一些注意问题