如何在运行时编译代码

时间:2012-12-01 16:22:54

标签: java android compilation runtime


我想使用一些视图ID,我想循环遍历所有这些视图。 这就是我的意思:

for (int i = 0;i<10;i++) {
    TextView tv = (TextView) findViewById(R.id.txt+i);
}

当然这是错误的,但我们可以说我在布局10 TextViews

txt0

txt1

txt2

.

.

.

txt9

我希望循环执行类似的操作:

TextView tv = (TextView) findViewById(R.id.txt0);
TextView tv = (TextView) findViewById(R.id.txt1);
.
.
.
TextView tv = (TextView) findViewById(R.id.txt+9);

有可能吗?

谢谢!

3 个答案:

答案 0 :(得分:4)

您可以按名称找到ID:

for(int i=0;i<10;i++){
     int id = getResources().getIdentifier("txt" + i, "id", context.getPackageName());
     TextView tv = findViewById(id);
     // but what here?
}

但是,这只是分配了一次textview 10次。这之后你在做什么?我看不出它是如何有用的,但也许你可以建立它。

答案 1 :(得分:0)

相反尝试这个

TextView tv = new TextView(context); 

并将tag设置为循环索引并通过标记

访问它

答案 2 :(得分:-1)

试试这个:

TextView[] tv=new TextView[10];
for (int i = 0;i<10;i++) {
    tv[i] = (TextView) findViewById(R.id.txt+i);
 tv[i].setId(1000+i);

}

当你想要使用textview时。使用tv [1] ...等