区块链技术博客
www.b2bchain.cn

ListView 的Adapter刷新数据时出现IndexOutOfBoundsException: Index: 4, Size: 0 数组越界异常问题的解决方案的讲解

这篇文章主要介绍了ListView 的Adapter刷新数据时出现IndexOutOfBoundsException: Index: 4, Size: 0 数组越界异常问题的解决方案的讲解,通过具体代码讲解7431并且分析了ListView 的Adapter刷新数据时出现IndexOutOfBoundsException: Index: 4, Size: 0 数组越界异常问题的解决方案的讲解的详细步骤与相关技巧,需要的朋友可以参考下

本文实例讲述了ListView 的Adapter刷新数据时出现IndexOutOfBoundsException: Index: 4, Size: 0 数组越界异常问题的解决方案的讲解。分享给大家供大家参考文章查询地址https://www.b2bchain.cn/7431.html。具体如下:

ListView 的notifyDataSetChanged刷新数据时出现IndexOutOfBoundsException: Index: 4, Size: 0 数组越界异常问题的解决方案

先上问题

2020-07-21 11:32:27.727 19384-19384/com.suirui.zhumu E/MessageQueue-JNI: java.lang.IndexOutOfBoundsException: Index: 4, Size: 0         at java.util.ArrayList.get(ArrayList.java:437)         at com.suirui.zhumu.adapter.ScheduleListAdapter.getView(ScheduleListAdapter.java:81)         at android.widget.AbsListView.obtainView(AbsListView.java:3271)         at android.widget.ListView.makeAndAddView(ListView.java:2238)         at android.widget.ListView.fillDown(ListView.java:838)         at android.widget.ListView.fillGap(ListView.java:801)         at android.widget.AbsListView.trackMotionScroll(AbsListView.java:8315)         at android.widget.ListView.trackMotionScroll(ListView.java:2155)         at android.widget.AbsListView.scrollIfNeeded(AbsListView.java:4945)         at android.widget.AbsListView.onTouchMove(AbsListView.java:6632)         at android.widget.AbsListView.onTouchEvent(AbsListView.java:6448)         at android.widget.ListView.onTouchEvent(ListView.java:1721)         at android.view.View.dispatchTouchEvent(View.java:14375)         at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3857)         at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:3535)         at android.widget.AbsListView.dispatchTouchEvent(AbsListView.java:6365)         at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3863)         at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:3551)         at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3863)         at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:3551)         at com.scwang.smartrefresh.layout.SmartRefreshLayout.dispatchTouchEvent(SmartRefreshLayout.java:1034)         at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3863)         at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:3551)         at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3863) 

ListView 的Adapter刷新数据时出现IndexOutOfBoundsException: Index: 4, Size: 0  数组越界异常问题的解决方案 首先我的listview没有设置header和footer所以不存在由header和footer导致越界异常问题。

原因分析

我的报错场景是在外层嵌套SmartRefreshLayout,在下拉刷新未完成时快速的上推加载更多出现的;
分析
我的Adapter的数据集提前被clear掉了,但是没有及时的去调用Adapter的notifyDataSetChanged()方法刷新,而是将notifyDataSetChanged()方法的调用放在了比如网络请求完成后的回调里面(会有延时),而导致你的数据集和视图不一致,产生了此异常如下图:
ListView 的Adapter刷新数据时出现IndexOutOfBoundsException: Index: 4, Size: 0  数组越界异常问题的解决方案

解决方案:

clear数据集后,及时调用Adapter的notifyDataSetChanged()方法,把clear的调用也放到网络请求后

总结

  1. listview设置header和footer,位置计算也要加上,否则也可能导致刷新时导致IndexOutOfBoundsException
  2. 因为是老项目的代码用中用的listview,为了性能方面考虑尽量还是用RecyclerView
本文地址https://www.b2bchain.cn/7431.html

赞(0) 打赏
部分文章转自网络,侵权联系删除b2bchain区块链学习技术社区 » ListView 的Adapter刷新数据时出现IndexOutOfBoundsException: Index: 4, Size: 0 数组越界异常问题的解决方案的讲解
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

b2b链

联系我们联系我们