android中的ArrayIndexOutOfBounds

时间:2014-06-02 12:47:54

标签: java android arraylist slideshow runnable

我已经制作了一个Android应用程序,因为我得到一个ImageUrls的arrayList,我想通过使用这个arrayLis在android中创建一个自动化的lsideShow,我试过如下使用线程但它给了我arrayIndexOPutOfBounds异常,它去了到第二张图片abd然后给出异常,请帮我保存,我的代码如下:

resultArray = new ArrayList<String>();
iv_paly.setOnClickListener(new OnCLickListener()){

@Override
OnClick(){
            imageLoader.displayImage(resultArray.get(1), proImage, options);
            proImage.postDelayed(swapImage, 3000);
}
MediaPlayer introSound, bellSound;
    Runnable swapImage = new Runnable() {
        @Override
        public void run() {
            for (int i = 0; i <= resultArray.size(); i++) {
                imageLoader.displayImage(resultArray.get(i), proImage, options);
            }
        }
    };
}

5 个答案:

答案 0 :(得分:5)

更改

 for (int i = 0; i <= resultArray.size(); i++) {

成:

 for (int i = 0; i < resultArray.size(); i++) {

如果您不太关心索引,也可以使用for(String s: resultArray){...} ......

答案 1 :(得分:2)

删除“=”,

for (int i = 0; i < resultArray.size(); i++) {
            imageLoader.displayImage(resultArray.get(i), proImage, options);
        }

答案 2 :(得分:1)

由于数组在java中是zerobased,你必须写<resultArray.size();而不是<=resultArray.size();

for (int i = 0; i < resultArray.size(); i++) {

答案 3 :(得分:1)

试试这个

for (int i = 0; i < resultArray.size(); i++) {
    imageLoader.displayImage(resultArray.get(i), proImage, options);
}

答案 4 :(得分:0)

Array的索引是基于零的,所以如果你的数组大小是10,它应该从[0]到[9]计数。在这种情况下,你永远不会有[10]元素。在你的for循环中,你从[0]迭代到[10],这导致ArrayIndexOutOfBounds错误,因为你想要你的数组中的第11个元素(并且不存在)。

所以基本上改变了

for (int i = 0; i <= resultArray.size(); i++) {
    imageLoader.displayImage(resultArray.get(i), proImage, options);
}

for (int i = 0; i < resultArray.size(); i++) {
    imageLoader.displayImage(resultArray.get(i), proImage, options);
}