新的Android / Java编码器。试图在Android应用程序中复制我在MS-Access中构建的项目。
我有一个类似名为TextView的布局,如text10,text12等。在MS-Access中,我可以使用集合引用动态构建这些名称:
For X = 10 To 15
Me.Controls("text" & X) = Null
Next
不需要数组。所以在java中寻找可以实现相同功能的结构。
我想基于两个输入动态设置多个TextView的背景颜色。一种是构建TextView引用,另一种是确定颜色的状态指示器。
这是一个调用setSubColor的过程:
public void Clear(MenuItem mi) {
puz.setText("");
sol.setText("");
for (int i=0; i<26; i++) {
setSubColor(aryA[i].charAt(0), 0);
到目前为止我对setSubColor的所作所为:
public void setSubColor (char c, int i) {
TextView v = (TextView) >>>dynamically reference v using name built with ("tv" + c)
if (i == 0) {v.setBackgroundColor(Color.TRANSPARENT);}
else {v.setBackgroundColor(Color.YELLOW);}
答案 0 :(得分:2)
您可以在运行时从res名称获取res id。因此,如果您的textview名称为“text1”,则可以使用:
获取整数idint id = getResources().getIdentifier("text1", "string", getPackageName());
TextView view = findViewById(id);
但这样做只是作为最后的手段,它容易出错,缓慢而且有些反模式。
OP编辑:无论name参数是什么总是返回0但标记为答案,因为它导致以下代码完全按照我想要的方式工作,反模式与否。
TextView v = (TextView) findViewById(getResources().getIdentifier("tv" + c, "id", getPackageName()));
答案 1 :(得分:0)
而不是TextView
Id
字段使用其Tag
字段。
String tag = (String)textView.getTag()
和textView.setTag(Object tag)
tag instanceof String
然后您可以通过TextView
Tag