在充气机内的TextView中添加文本

时间:2013-09-29 22:16:21

标签: android textview layout-inflater

我让我的充气机显示我想要的行数。我无法在充气机内的每个文本视图中插入文本。它只填充第一个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);

        }

2 个答案:

答案 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