我被困了大约2个小时,以便尝试创建一个TableRow,它是多个有效的布局。我的代码看起来像这样:
LayoutInflater inflater = LayoutInflater.from(this);
TableLayout tblLayout = inflater.inflate(R.layout.tblL,parent,false);
TableRow tableRow = (TableRow) tblListItems.findViewById(R.id.tableRow );
View headerCell = inflater.inflate(R.layout.header_col,tblListItems,false);
TextView tvCellName = (TextView) headerCell.findViewById(R.id.tvCellName);
for(String item: items) {
tvCellName.setText(item);
tableRow.addView(tvCellName);
}
relativeLayout2.addView(tblLayout);
我得到的错误:
The specified child already has a parent. You must call removeView() on the child's parent first.
我做错了什么,我该怎么做?
答案 0 :(得分:1)
视图只能有一个父级。您试图一遍又一遍地添加相同的视图。
for(String item: items) {
tvCellName.setText(item);
tableRow.addView(tvCellName); // this will add the same view.
}
如果您想要添加另一个视图,则需要在for
内动态创建视图,而不是对其进行充气,例如:
tvCellName = new TextView(this);//this creates a new view, that doesn't have a parent.
修改强>
在for:
中夸大您的观点 View headerCell;
TextView tvCellName;
for(String item: items) {
headerCell = inflater.inflate(R.layout.header_col,tblListItems,false);
tvCellName = (TextView) headerCell.findViewById(R.id.tvCellName);
tvCellName.setText(item);
tableRow.addView(tvCellName);
}