应用程序崩溃尝试添加arraylist的值

时间:2013-10-26 22:35:50

标签: java android

在我的活动中,我希望普通用户提交的评分显示在评级栏中。

调用用户评级,然后使用值填充ArrayList。

这部分代码可以使用,例如:我可以setRating(array_list.get(index)),并显示正确的评级。

我在线程中提取数据,然后尝试在以下处理程序中设置评级:

    h.postDelayed(new Runnable() { 
    public void run () {                

        if (t.getState() == Thread.State.TERMINATED) {

            int sum = 0;
            for(int i = 0; i == products.size(); i++)
            {
                sum = sum + products.get(i); //line 256
            }               
            int x = Math.round(sum / products.size());

            ratingbar1.setRating(x);

            return;
        } else {
            h.postDelayed(this, 1000);  
        }
    }
    }
, 1000);

打开时应用程序崩溃,我在logCat中收到以下错误:

10-27 00:06:31.209: E/AndroidRuntime(859): FATAL EXCEPTION: main
10-27 00:06:31.209: E/AndroidRuntime(859): java.lang.IndexOutOfBoundsException: Invalid index 15, size is 15
10-27 00:06:31.209: E/AndroidRuntime(859):  at java.util.ArrayList.throwIndexOutOfBoundsException(ArrayList.java:257)
10-27 00:06:31.209: E/AndroidRuntime(859):  at java.util.ArrayList.get(ArrayList.java:311)
10-27 00:06:31.209: E/AndroidRuntime(859):  at com.example.hikebuddy.Lion$6.run(Lion.java:256)

我试过玩这个,但似乎再也没想过了。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

替换此

        for(int i = 0; i == products.size(); i++)
        {
            sum = sum + products.get(i); //line 256
        }  

用这个

        for(int i = 0; i < products.size(); i++)
        {
            sum = sum + products.get(i); //line 256
        }

products.size()为15,但数组从0开始,因此最后一个索引为14