我有48个变量(TextViews),比如tv1,tv2,tv3,tv4 ...... tv48。
我想用for循环设置这些变量的值,因为我不想写下48次同一行。
这样的事情:
for (int i=1; i<49; i++)
{
"tv"+i.setText(i);
}
如何实现这一目标?
答案 0 :(得分: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);
}
答案 1 :(得分: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
数组。
答案 2 :(得分:1)
"tv"+i
只能用于反射。
我会把那些TextView放在一个数组中
for (int i=0; i<textViews.length; i++)
{
textViews[i].setText(""+i);//be a String. not an int...
}
我会使用textViews = new TextViews[]{tv1,tv2..tv48}
我希望它有所帮助!