使用循环将多个视图添加到RelativeLayout

时间:2018-07-10 12:18:12

标签: android android-relativelayout

我试图将多个视图添加到我在xml中声明的RelativeLayout中。循环是唯一的方法,因为大小是动态的,因此我不知道需要在其中添加多少个元素。但是我遇到了这个错误。

  

java.lang.IllegalStateException:指定的子对象已经有一个   父母您必须先在孩子的父母上调用removeView()。

代码:

View inf = getActivity().getLayoutInflater().inflate(R.layout.item_table_edit, null);
RelativeLayout.LayoutParams layoutParamss = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
for (int i = 0; i < putzones.size(); i++) {
        inf.setX((float) putzones.get(i).getPosX());
        inf.setY((float) putzones.get(i).getPosY());
        addMap.addView(inf, layoutParamss);
}

这里有什么问题,因为当我尝试通过单击项目添加视图时,它可以使用相同的代码,而不会出现任何错误。当我通过单击没有循环的项目添加代码时,代码是相同的。预先感谢。

1 个答案:

答案 0 :(得分:2)

您必须在每个循环的迭代中创建一个item_table_edit的新实例。

RelativeLayout.LayoutParams layoutParamss = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
for (int i = 0; i < putzones.size(); i++) {
        View inf = getActivity().getLayoutInflater().inflate(R.layout.item_table_edit, null);
        inf.setX((float) putzones.get(i).getPosX());
        inf.setY((float) putzones.get(i).getPosY());
        addMap.addView(inf, layoutParamss);
}