如何引用在main.xml中创建的EditText数组

时间:2011-10-20 01:09:21

标签: android eclipse loops android-edittext

我的应用程序变得有点臃肿,我想通过将一些变量更改为数组并使用一些for循环来处理我的变量来“压缩”一些代码。 我的第一个目标是初始化我的EditText框

我的原始代码(工作正常)包括:

EditText miBox1, spBox1 ;   
EditText miBox2, spBox2 ;   

...

miBox1 = (EditText)this.findViewById(R.id.miBox1);
spBox1 = (EditText)this.findViewById(R.id.spBox1);
miBox2 = (EditText)this.findViewById(R.id.miBox2);
spBox2 = (EditText)this.findViewById(R.id.spBox2);

我实际上有20个mi框和20个sp框来设置 我正在尝试创建一个数组,并循环遍历它们

在我的main.xml中,我将EditText框重命名为 miBox [1] spBox [1]等。

我在我的活动中声明:

EditText[] miBox = new EditText[20] ;    
EditText[] spBox = new EditText[20] ;  

并将其置于for循环中

miBox[i] = (EditText)this.findViewById(R.id.miBox[i]);
spBox[i] = (EditText)this.findViewById(R.id.spBox[i]);

但Eclipse无法解析R.id.miBox [i]

如何在我的xml中正确创建EditText数组 它被认可了?

由于 JD

2 个答案:

答案 0 :(得分:4)

int resID = getResources().getIdentifier("miBox" + i,
    "id", getPackageName());

其中i是你的索引

EditText editText = (EditText)findViewById(resId);

如果你想把它放在一个数组中,只需这样做:

 miBox[i] = (EditText)findViewById(resId);

答案 1 :(得分:3)

这里的问题是你错误地修改了一些东西。

代码应该是:

EditText[] miBox = new EditText[20] ;    
EditText[] spBox = new EditText[20] ;  

并将其置于for循环中

miBox[i] = (EditText)this.findViewById(R.id.miBox1);
spBox[i] = (EditText)this.findViewById(R.id.spBox1);

这里,msitake正在使用miBox[i],因为那不是你在布局xml中使用的id。

希望这会有所帮助。