Muti-Barrage icon indicating copy to clipboard operation
Muti-Barrage copied to clipboard

ArrayIndexOutOfBoundsException

Open sdgSnow opened this issue 5 years ago • 6 comments

//设置弹幕数据 List<BarrageData> dataList = new LinkedList<>(); for (int i = 0; i < content.length; i++) { dataList.add(new BarrageData(content[i], 0,i)); } mAdapter.addList(dataList);

这样添加数据会经常角标越界

异常日志 java.lang.ArrayIndexOutOfBoundsException: length=0; index=0 at com.orient.tea.barragephoto.ui.BarrageView.getSpeed(BarrageView.java:314) at com.orient.tea.barragephoto.ui.BarrageView.addBarrageItem(BarrageView.java:263) at com.orient.tea.barragephoto.adapter.BarrageAdapter.createItemView(BarrageAdapter.java:101) at com.orient.tea.barragephoto.adapter.BarrageAdapter.access$500(BarrageAdapter.java:31) at com.orient.tea.barragephoto.adapter.BarrageAdapter$BarrageAdapterHandler.handleMessage(BarrageAdapter.java:275)

sdgSnow avatar Jun 20 '19 01:06 sdgSnow

不好意思,现在才看到,是频繁添加数据才会出现吗?

mCyp avatar Jun 24 '19 10:06 mCyp

你好,没有频繁添加数据,在初始化的时候直接for循环去添加的,后面没变

sdgSnow avatar Jun 24 '19 10:06 sdgSnow

感谢提出,我等会儿测试测试。

mCyp avatar Jun 24 '19 10:06 mCyp

嗯嗯,如果需要更多的代码我再贴出来,感谢大佬解惑

sdgSnow avatar Jun 24 '19 10:06 sdgSnow

我猜你应该把数据初始化放入了ActivityonCreate()onResume之间,这个时候父布局的View可能还没有执行绘制过程(View的绘制过程需要时间),目前的做法是将数据初始化放在onWindowFocusChanged(boolean hasFocus)方法中,我的Demo中也是这么做的

mCyp avatar Jun 24 '19 23:06 mCyp

嗯嗯好的,谢谢,我去试试

sdgSnow avatar Jun 25 '19 02:06 sdgSnow