Android:以编程方式添加两个文本视图

12

我正在尝试以编程方式将视图添加到线性布局中。

    LinearLayout layout     = (LinearLayout) findViewById(R.id.info);
    String [] informations  = topOffer.getInformations();
    TextView informationView;
    View line = new View(this);
    line.setLayoutParams(new LayoutParams(1, LayoutParams.FILL_PARENT));
    line.setBackgroundColor(R.color.solid_history_grey);
    for (int i = 0; i < informations.length; i++) {
        informationView = new TextView(this);
        informationView.setText(informations[i]);
        layout.addView(informationView, 0);
        layout.addView(line, 1);
    }

首先,我只添加了informationsView,一切都很正常。但是在添加line-View后,它崩溃并显示以下错误:

java.lang.IllegalStateException:指定的子项已经有一个父项。您必须首先调用removeView()来从子项的父项中删除它。

所以我尝试使用addView(View v, int index),但是它也崩溃并显示相同的消息…

有人有解决方案吗?

谢谢, Martin

2个回答

12

正如gpmoo7所说,你需要在循环中每次创建一个新的视图

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.linear);

    LinearLayout layout = (LinearLayout) findViewById(R.id.linear);

    String[] informations = new String[] { "one", "two", "three" };
    TextView informationView;

    for (int i = 0; i < informations.length; i++) {
        View line = new View(this);
        line.setLayoutParams(new LayoutParams(1, LayoutParams.MATCH_PARENT));
        line.setBackgroundColor(0xAA345556);
        informationView = new TextView(this);
        informationView.setText(informations[i]);
        layout.addView(informationView, 0);
        layout.addView(line, 1);
    }

}

2
在同一个父视图中不能添加相同的子视图多次。每次需要创建一个新的视图或者填充一个新的视图。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接