在XML布局的多个部分上更改TextView

时间:2013-03-19 02:53:16

标签: android android-linearlayout android-xml

我正在以编程方式添加多个XML View。我正在使用布局inflater来添加它们,并且没有问题。

但是我无法修改每个TextView

例如,考虑我在最终LinearLayout中添加View三次。我在线性布局中有一个TextView。我使用findViewById提取它,如果我setText("hello");它会反映在第一个布局中,而不是第二个和第三个布局中。

在添加多个XML元素时,inflater是否会动态创建新ID?

1 个答案:

答案 0 :(得分:0)

要回答部分问题,请注意:LayoutInflater不会动态生成ID。

当您说要添加视图时,您在哪里添加它们?你提到了最终的观点。

您不包含代码,但我假设您正在调用Activity.findViewById。如果您从this.findViewById调用Activity,则表示您正在遍历整个视图层次结构并找到包含此ID的第一个视图。

您需要做的是,遍历包含LinearLayout的所有TextView并在每个findViewById上调用for (LinearLayout layout : <fill in>) { ((TextView) layout.findViewById(R.id.yourid)).setText("hello"); }

<fill in>

至于View parent = some view;。没有你的代码很难说明如何填写它。看起来你正在将它们添加到父视图中吗?我们假设我们有一个父LinearLayout

你必须得到它的所有孩子并进行迭代。有几种方法可以执行此操作,具体取决于查看父级的子类。让我们保持简单,假设父母只是另一个for (int i = 0; i < parent.getChildCount(); i++) { final LinearLayout layout = (LinearLayout) parent.getChildAt(i); ((TextView) layout.findViewById(R.id.yourid)).setText("hello"); }

在这种情况下,for循环变为类似:

{{1}}