我试图使用LayoutInflater将一些视图放入Fragment中。它们是TextViews,但我似乎只能在我添加的第一个上设置值。它似乎是一个id冲突导致问题,但我不知道如何克服这个问题。 我的onCreateView的相关位如下所示:
ViewGroup vg = (ViewGroup) inflater.inflate(R.layout.data_viewer,
container, false);
HashMap<String, Long> titles = mHelper.getTitles("firestations");
for (String key : titles.keySet()) {
**View row = inflater.inflate(R.layout.row, vg, true);
TextView label = (TextView) row.findViewById(R.id.textView1);
label.setText(key);**
TextView value = (TextView) row.findViewById(R.id.textView2);
value.setText(getArg(key));
}
正如你从星号线上可以看到的那样,我正在给一行排空&#39; (这只是一个水平线性布局,有2个文本视图,其中包含textView1和textView2)。我提供了我膨胀的ViewGroup的句柄并传递true以获取附加到父级的视图。所有这一切似乎都很好。然后我在我刚刚膨胀的行上调用findViewById。我本以为这个发现只能找到那一特定行的孩子。它看起来像是使用更宽的范围并匹配整个id组(它们是相同的 - 它们都来自同一块xml)。它然后给了我第一个。 所有这一切的结果是我正在使用显示在顶部TextView对上的最后一行数据正确布局屏幕。其余的TextViews都有xml定义的默认文本。
任何人都知道如何解决这个问题?
谢谢,
Anthony Nolan
答案 0 :(得分:1)
看起来支持代码中可能存在小错误。显式添加视图(而不是使用true param)可以正常工作:
for (String key : titles.keySet()) {
View row = inflater.inflate(R.layout.row, vg, false);
TextView label = (TextView) row.findViewById(R.id.textView1);
label.setText(key);
TextView value = (TextView) row.findViewById(R.id.textView2);
value.setText(getArg(key));
vg.addView(row);
}