Android:在for循环中加载TextViews数组

时间:2014-05-22 04:39:16

标签: android textview imagebutton

嗨,这是我的头脑,我正在尝试在for循环中加载一个TextViews和ImageButtons数组,我已经搜索了答案,并在我的搜索结束后看起来像这样的代码:

public void initializeVideos() {
    // TODO Auto-generated method stub
    Titles = new TextView[5];
    Images = new ImageButton[5];
    int tvId;
    int ibId;
    for(int i = 1; i < 6; i++){
        tvId = getResources().getIdentifier("tv" + i, "id", getPackageName());
        ibId = getResources().getIdentifier("ib" + i, "id", getPackageName());
        Titles[i] = (TextView) findViewById(tvId);
        Images[i] = (ImageButton) findViewById(ibId);
    }
}

问题是我遇到了NumberFormatException,我似乎无法理解为什么......

帮助将不胜感激

2 个答案:

答案 0 :(得分:0)

是的,因为你的for循环错了,你必须从i = 0到i <5开始循环。 这里的问题是你的最后一个id是否为null表示所以没有id可用,所以它给你numberformat异常。

答案 1 :(得分:0)

循环中的值是错误的,因为你得到了崩溃,你正在for循环初始化 i = 1 的值,所以第一个值将放在第一个位置数组的数组和第0位保持为空,然后当达到5时迭代将继续。我将使数组超出绑定异常。这是因为数组大小为5,位置将像这样[0 ,1,2,3,4]这是代码中大小为5的数组的位置顺序将会发生的事情。对于最后一次迭代,它将把值放在[5]中,这在数组中是不可用的。那么导致问题;

工作代码将是这样的

public void initializeVideos() {
    // TODO Auto-generated method stub
    TextView[] Titles = new TextView[5];
    ImageButton[] Images = new ImageButton[5];
    int tvId;
    int ibId;
    for (int i = 0; i < 5; i++) //Just changed the values in for loop


  {
        System.out.println(i);
        tvId = getResources().getIdentifier("tv" + i, "id",
                getPackageName());
        ibId = getResources().getIdentifier("ib" + i, "id",
                getPackageName());
        Titles[i] = (TextView) findViewById(tvId);
        Images[i] = (ImageButton) findViewById(ibId);
         }
     }