使用循环将多个视图添加到 RelativeLayout
Adding multiple views to RelativeLayout with loop
我正在尝试向我在 xml 中声明的 RelativeLayout 添加多个视图。循环是唯一的方法,因为我不知道需要在那里添加多少元素,因为大小是动态的。但是我得到了这个错误。
java.lang.IllegalStateException: The specified child already has a
parent. You must call removeView() on the child's parent first.
代码:
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);
}
这里出了什么问题,因为当我尝试通过单击项目添加视图时,它使用相同的代码工作,没有任何错误。当我通过单击没有循环的项目添加时,代码是相同的。提前致谢。
您必须在每次循环迭代时创建 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);
}
我正在尝试向我在 xml 中声明的 RelativeLayout 添加多个视图。循环是唯一的方法,因为我不知道需要在那里添加多少元素,因为大小是动态的。但是我得到了这个错误。
java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first.
代码:
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);
}
这里出了什么问题,因为当我尝试通过单击项目添加视图时,它使用相同的代码工作,没有任何错误。当我通过单击没有循环的项目添加时,代码是相同的。提前致谢。
您必须在每次循环迭代时创建 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);
}