1

我的布局文件中有一些 TextView 元素,如下所示:

<Table Layout>
    ...

    <TableRow android:gravity="center_horizontal">    
        <TextView
            android:id="@+id/tv1"
            android:text="@string/text_value"
            android:tag="id1">

     ...

    <TableRow android:gravity="center_horizontal">    
        <TextView
            android:id="@+id/tv1"
            android:text="@string/text_value"
            android:tag="idN">

     ...

</TableLayout>

我想用

  for (int i=0; i < 10; i++) {
     myText = (TextView) findViewbyTag("id"+i);
     myText.setText("id is - "+i);
  } 

构造以匹配每个标记值并将文本值设置到每个 TextView 元素中。它不起作用!我了解 tp 如何通过 id 使用它,但 id 是资源中的 int 值,我无法在我的 for() 构造中生成它。

我能做些什么?如何使用 findViewbyTag?

4

1 回答 1

2

您不需要使用标签。您应该如下使用动态资源检索。

for (int i=0; i < 10; i++) {
  // generate id dynamically
  int id = getResources().getIdentifier("tv"+i, "id", getPackageName());
  // find view by generated id
  TextView myText = (TextView) findViewbyId(id);
  myText.setText("id is - tv"+i);
}

两者getResources()getPackageName()都是 的方法Context

于 2013-11-06T05:44:31.903 回答