我让我的充气机显示我想要的行数。我无法在充气机内的每个文本视图中插入文本。它只填充第一个TextView,其余部分留空。我尝试使用数组但仍然遇到运行时错误
for (int i = 1; i <= numberOfGuests; ++i) {
LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View view = inflater.inflate(R.layout.row_per_person, table);
float numberInsertedForPerson = (float) (Math.round(tipPerPersons * 100.0) / 100.0);
String sTipPerPerson = Float.toString(numberInsertedForPerson);
tipPerPerson = (TextView) findViewById(R.id.tipPerPerson);
tipPerPerson.setText(sTipPerPerson);
}
答案 0 :(得分:2)
这里的问题是(在我看来)LayoutInflater
的相当混乱的行为。
首先,您应该缓存引用,而不是在每次迭代时获取LayoutInflater
。其次,当您调用inflate(int, ViewGroup)
方法时,它实际上会返回第二个参数(ViewGroup
),而不是充气View
。答案是将第三个参数(无论是否应附加View
)传递为false。这会为您提供夸大的View
,然后您可以将其附加到父ViewGroup
。正确的方式如下:
LayoutInflater in = getLayoutInflater();
for (int i = 1; i <= numberOfGuests; i++) {
View v = in.inflate(R.layout.row_per_person, table, false);
float num = (float) (Math.round(tipPerPersons * 100.0) / 100.0);
String tip = Float.toString(num);
tipPerPerson = (TextView) v.findViewById(R.id.tipPerPerson);
tipPerPerson.setText(tip);
table.addView(v);
}
答案 1 :(得分:0)
您应该添加view.findViewById
,而不是使用findViewById