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

发布于 2024-12-11 07:38:32 字数 944 浏览 1 评论 0原文

我的应用程序变得有点臃肿,我想通过将一些变量更改为数组并使用一些 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]

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

谢谢 京东

My app is getting a little bloated, I would like to 'compress' some code by changing some of my variables into arrays and using some for loops to process my variables.
My first target is initializing my EditText boxes

My original code (working fine) included:

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);

I actually have twenty mi boxes and 20 sp boxes to setup
I am trying to create an array, and loop through them

In my main.xml I have renamed my EditText boxes to
miBox[1] spBox[1], etc.

I'm declaring in my activity with:

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

and putting this into a for loop

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

but Eclipse cannot resolve R.id.miBox[i]

How do I properly create an array of EditText in my xml so that
it is recognized?

Thanks
JD

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

拥抱没勇气 2024-12-18 07:38:33
int resID = getResources().getIdentifier("miBox" + i,
    "id", getPackageName());

其中 i 是您的索引,

EditText editText = (EditText)findViewById(resId);

如果您想将其放入数组中,只需执行以下操作:

 miBox[i] = (EditText)findViewById(resId);
int resID = getResources().getIdentifier("miBox" + i,
    "id", getPackageName());

where i is your index

EditText editText = (EditText)findViewById(resId);

if you want to put it in an array, simply do this :

 miBox[i] = (EditText)findViewById(resId);
北恋 2024-12-18 07:38:33

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

代码应该是这样的:

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。

希望这有帮助。

the problem here is you have wrongly modified a few things.

the code should be like:

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

and putting this into a for loop

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

Here, the msitake is using miBox[i] since thats not the id you have used in your layout xml.

hope this helps.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文