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);
}
这里有什么问题,因为当我尝试通过单击项目来添加视图时,它使用相同的代码,没有任何错误。当我通过单击没有循环的项目添加时,代码是相同的。提前致谢。
解决方案
您必须在每个循环的迭代中创建 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);
}
推荐阅读
- c# - 我想在 MVVM 中使用 ListBox 的 SelectionChangeEvent
- keycloak - 如何扩展 keycloak 以支持指纹认证
- powershell - 将 pom.xml 版本转换为数字格式
- sql - 删除 Oracle 表中的重复行
- android - 在 Flutter 中使用平台通道
- python - Python - 使用 HTTPServer 处理并发 POST 请求并保存到文件
- spring - 如何巧妙地配置 Spring WebSecurity
- java - 检测一条线是否完全在多边形内从一个顶点延伸到另一个顶点
- appium - Appium) 完成设置可选依赖项
- sql - 在 Oracle 11g 上将行转换为列