数组:索引无效

时间:2013-10-13 18:32:58

标签: android arrays indexoutofboundsexception

我得到java.lang.IndexOutOfBoundsException: Invalid index 2, size is 2。关于这一点有很多问题,但没有人帮助我。我正在构建一个旨在显示“人”与“人”的数组。这是我如何做到这一点的伪结构:

 Array[0] vs Array[1]
 Array[2] vs Array[3]
 Array[4] vs Array[5]

注意:如果可以使这更容易,可以执行并行数组。

这是我正在尝试的代码

private void displayCard() {
    HomeItemList = new ArrayList<HomeItem>();
    fightList.whereContainedIn("objectId", itemListCard);
    fightList.findInBackground(new FindCallback<ParseObject>() {
        @Override
        public void done(List<ParseObject> objectId, ParseException e) {
            if (e == null){
              for(int i = 0; i < itemListCard.size(); i=i+2){
                    HomeItem homeItem = new HomeItem();
                    homeItem.setHomeItemID(k);
                    k++;
                    //set Red Array
                    homeItem.setHomeItemRedName(objectId.get(i).getString("Name"));
                    homeItem.setHomeItemRedAge(objectId.get(i).getString("Age"));
                    homeItem.setHomeItemRedRecord(objectId.get(i).getString("Record"));
                    homeItem.setHomeItemRedHeight(objectId.get(i).getString("Height"));
                    homeItem.setHomeItemRedWeight(objectId.get(i).getString("Weight"));
                    homeItem.setHomeItemRedCity(objectId.get(i).getString("Location"));
                    homeItem.setHomeItemRedExp(objectId.get(i).getString("Experience"));

                    //Set Blue Array
                    homeItem.setHomeItemBlueName(objectId.get(i+1).getString("Name"));
                    homeItem.setHomeItemBlueAge(objectId.get(i+1).getString("Age"));
                    homeItem.setHomeItemBlueRecord(objectId.get(i+1).getString("Record"));
                    homeItem.setHomeItemBlueHeight(objectId.get(i+1).getString("Height"));
                    homeItem.setHomeItemBlueWeight(objectId.get(i+1).getString("Weight"));
                    homeItem.setHomeItemBlueCity(objectId.get(i+1).getString("Location"));
                    homeItem.setHomeItemBlueExp(objectId.get(i+1).getString("Experience"));


                    //add the array
                    HomeItemList.add(homeItem);

itemListCard.size()会经常更改尺寸。现在,它是2.这是我的LogCat:

    java.lang.IndexOutOfBoundsException: Invalid index 2, size is 2
        at java.util.ArrayList.throwIndexOutOfBoundsException(ArrayList.java:251)
        at java.util.ArrayList.get(ArrayList.java:304)
        at com.package.name.databaseFightCard$3.done(databaseFightCard.java:225)
        at com.parse.FindCallback.internalDone(FindCallback.java:45)
        at com.parse.FindCallback.internalDone(FindCallback.java:1)
        at com.parse.Parse$6$1.run(Parse.java:888)
        at android.os.Handler.handleCallback(Handler.java:725)
        at android.os.Handler.dispatchMessage(Handler.java:92)
        at android.os.Looper.loop(Looper.java:137)
        at android.app.ActivityThread.main(ActivityThread.java:5041)
        at java.lang.reflect.Method.invokeNative(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:511)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
        at dalvik.system.NativeStart.main(Native Method)

这指向//set Blue Array之后的行。我明白因为数组从0开始,我不明白的是如何构造它。

2 个答案:

答案 0 :(得分:1)

似乎objectId数组只有两个元素(位置01),并且您尝试在第二次迭代期间访问位置2 for循环。检查您如何设置objectId

发布有关objectId的代码也会有所帮助。

答案 1 :(得分:0)

这实际上是parse错误。我正在使用parse.com,而我正在使用数组来处理错误的类。我必须在parse.com上访问我的数据浏览器并调整所有objectids