Java-动态构建TextView参考



新的android/java编码器。试图在Android应用中复制一个我在MS-Access中构建的项目。

我的布局具有相似的命名文本视图,例如text10,text12等。

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

无需数组。因此,在Java中寻找可以完成相同功能的结构。

我想根据两个输入动态设置多个文本视图的背景颜色。一个是构建文本视图参考,另一个是一个状态指标,该指标将确定颜色。

这是一个调用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);}

您可以在运行时从RES名称中获取RES ID。因此,如果您的TextView具有名称为" Text1",则可以通过使用:

获得整数ID
int id = getResources().getIdentifier("text1", "string", getPackageName());
TextView view = findViewById(id);

,但仅作为最后一个度假胜地这样做,它容易出错,很慢,有点像抗模式。

编辑OP:不管始终返回0的名称参数,但标记为答案,因为它导致了以下代码,该代码完全按照我的意愿(是否反pattern)起作用。

TextView v = (TextView) findViewById(getResources().getIdentifier("tv" + c, "id", getPackageName()));

而不是TextView Id字段使用其Tag字段。 String tag = (String)textView.getTag()textView.setTag(Object tag)带有tag instanceof String

然后,您可以通过Tag

找到TextView

最新更新