Java - 动态构建textview引用

时间:2017-02-22 20:30:45

标签: java android

新的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);}

2 个答案:

答案 0 :(得分:2)

您可以在运行时从res名称获取res id。因此,如果您的textview名称为“text1”,则可以使用:

获取整数id
int 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
相关问题