4

我有 48 个变量(TextViews),例如 tv1、tv2、tv3、tv4...tv48。

我想使用 for 循环为这些变量设置一个值,因为我不想将同一行写下 48 次。

像这样的东西:

for (int i=1; i<49; i++)
{
        "tv"+i.setText(i);
}

如何做到这一点?

4

3 回答 3

5

像这样初始化它们:

TextView[] tv = new TextView[48];

for然后你可以使用这样的循环在其中设置文本:

for(int i=0; i<48; i++)
{
   tv[i].setText("your text");
}

编辑:在您的 XML 文件中,为所有文本视图提供相同的 ID。例如 tv0、tv1、tv2 等。初始化一个字符串数组,它将这些 ID 作为字符串。

String ids[] = new String[48];
for(int i=0; i<48; i++)
{
   ids[i] = "tv" + Integer.toString(i);
}

现在,要初始化 的数组TextView,请执行以下操作:

for(int i=0; i<48; i++)
{
   int resID = getResources().getIdentifier(ids[i], "id", "your.package.name");
   tv[i] = (TextView) findViewById(resID);
}
于 2012-09-18T18:17:24.997 回答
2
TextView[] textViews = new TextView[48];

int[] ids = new int[48];

for(int i=0;i<48;i++) {
    textViews[i] = (TextView) findViewById(ids[i]);
}

for(int i=0;i<48;i++) {
    textViews[i].setText(String.valueOf(i));
}

在这里,您需要将所有 ID 添加到ids数组中。

于 2012-09-18T18:18:14.467 回答
1
"tv"+i

只能与反射一起使用。

我会将这些 TextViews 放在一个数组中,然后

for (int i=0; i<textViews.length; i++)
{
        textViews[i].setText(""+i);//be a String. not an int...
}

我会用,在哪里textViews = new TextViews[]{tv1,tv2..tv48}

我希望它有帮助!

于 2012-09-18T18:17:19.803 回答