2017-02-22 59 views
0

新的Android/Java编码器。试图在Android应用程序中复制我在MS-Access中构建的项目。Java - 动态构建文本视图ID

我有类似的命名TextViews布局,像text10,text12,等等。在MS-访问,我可以动态地收集引用建立这些名字:

For X = 10 To 15 
    Me.Controls("text" & X) = Null 
Next 

没有要求阵列。 Java中的哪些结构可以实现相同的功能?

+0

使用元素的数组或列表。即使你可以按照你所说的方式去做,这是一个可怕的想法。不要在java中遵循访问编程风格;有没有人再使用VBA的原因 – nhouser9

+0

也许有一天我会学习这一点,但现在找不到清楚的解释如何用xml布局中定义的TextView填充数组。 – June7

回答

2

您可以在运行时从res名称获取res id。所以,如果你的TextView有ID“text1”中,您可以通过使用得到的整数ID:

int id = getResources().getIdentifier("text1", "string", getPackageName()); 
TextView view = findViewById(id); 

但只能作为最后的手段这样做,这是容易出错的,缓慢的,有点反模式。

编辑由OP:不管什么名称参数总是返回0,但标记为答案,因为它导致下面的代码完全按照我想要的,反模式或不。
TextView v = (TextView) findViewById(getResources().getIdentifier("tv" + a[i], "id", getPackageName()));

0

取而代之的是TextViewId领域使用其Tag场。 String tag = (String)textView.getTag()textView.setTag(Object tag)tag instanceof String

那么你可以找到TextView通过Tag

+0

只是得到错误:无法解析符号'textView' – June7

+0

你是认真的吗? textView只是一个变量名,显然你必须使用你自己的 – CrowsNet

+0

是的,我明白,并得到那个错误后,试图声明和启动,但也没有工作。我会发起什么? Timo Ohr的回答解决了这个问题,现在正在进行讨论。但是非常感谢你的努力。 – June7