1

我正在View以编程方式添加多个 XML 。我正在使用布局充气器来添加它们,这没有问题。

但我无法修改TextView它们中的每一个。

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

添加多个 XML 元素时,inflater 会动态创建新的 id 吗?

4

1 回答 1

0

要回答您的部分问题,不:ID 不是由LayoutInflater.

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

您没有包含您的代码,但我假设您正在调用Activity.findViewById. 如果您this.findViewById从您的调用Activity,您将遍历整个视图层次结构并找到具有此类 Id 的第一个视图。

您需要做的是遍历LinearLayout包含您的 s 的所有TextViews 并调用findViewById它们中的每一个。

for (LinearLayout layout : <fill in>) {
    ((TextView) layout.findViewById(R.id.yourid)).setText("hello");
}

至于<fill in>. 如果没有您的代码,很难说出如何填写它。似乎您正在将这些添加到父视图中,对吗?假设我们有一个 parent View parent = some view;

你只需要得到它的所有孩子并迭代。根据父视图的子类,有几种方法可以做到这一点。让我们保持简单,并假设父级只是另一个LinearLayout

在这种情况下,for 循环会更改为:

for (int i = 0; i < parent.getChildCount(); i++) {
    final LinearLayout layout = (LinearLayout) parent.getChildAt(i);
    ((TextView) layout.findViewById(R.id.yourid)).setText("hello");
}
于 2013-03-19T03:20:44.667 回答