动态删除 TableRow
Deleting TableRow dynamically
我想用一些动态 Table 行编写 Table 代码。
每个 Table 行都有一个 "Row-Delete-Button" 删除按钮所在的行。所以每个 Button 都应该删除它自己的 TableRow。
为了测试,我用 2 个硬编码行尝试了我的代码:
tablerow = inflater.inflate(R.layout.rowelement,null,false);
table.addView(tablerow);
tablerow = inflater.inflate(R.layout.rowelement,null,false);
table.addView(tablerow);
现在我添加了一个 OnClickListener:
DeleteButton = (Button)findViewById(R.id.deleteButton);
DeleteButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
View parentRow = (View)v.getParent();
ViewGroup container = ((ViewGroup) parentRow.getParent());
container.removeView(parentRow);
container.invalidate();
}
});
使用此代码,OnClickListener 仅适用于一个(第一个)Table行。
我的问题有解决方案吗?
您需要在每个 table 行上使用 findViewById
为每个删除按钮创建一个侦听器。
private class DeleteClickListener implements OnClickListener {
private View row;
public DeleteClickListener(View row) {
this.row = row;
}
@Override
public void onClick(View v) {
table.removeView(row);
}
}
private void setupTable() {
LayoutInflater inflater = getLayoutInflater();
View tablerow = inflater.inflate(R.layout.rowelement, table,false);
Button deleteButton = (Button)tablerow.findViewById(R.id.deleteButton);
deleteButton.setOnClickListener(new DeleteClickListener(tablerow));
table.addView(tablerow);
tablerow = inflater.inflate(R.layout.rowelement, table,false);
deleteButton = (Button)tablerow.findViewById(R.id.deleteButton);
deleteButton.setOnClickListener(new DeleteClickListener(tablerow));
table.addView(tablerow);
}
我想用一些动态 Table 行编写 Table 代码。 每个 Table 行都有一个 "Row-Delete-Button" 删除按钮所在的行。所以每个 Button 都应该删除它自己的 TableRow。
为了测试,我用 2 个硬编码行尝试了我的代码:
tablerow = inflater.inflate(R.layout.rowelement,null,false);
table.addView(tablerow);
tablerow = inflater.inflate(R.layout.rowelement,null,false);
table.addView(tablerow);
现在我添加了一个 OnClickListener:
DeleteButton = (Button)findViewById(R.id.deleteButton);
DeleteButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
View parentRow = (View)v.getParent();
ViewGroup container = ((ViewGroup) parentRow.getParent());
container.removeView(parentRow);
container.invalidate();
}
});
使用此代码,OnClickListener 仅适用于一个(第一个)Table行。 我的问题有解决方案吗?
您需要在每个 table 行上使用 findViewById
为每个删除按钮创建一个侦听器。
private class DeleteClickListener implements OnClickListener {
private View row;
public DeleteClickListener(View row) {
this.row = row;
}
@Override
public void onClick(View v) {
table.removeView(row);
}
}
private void setupTable() {
LayoutInflater inflater = getLayoutInflater();
View tablerow = inflater.inflate(R.layout.rowelement, table,false);
Button deleteButton = (Button)tablerow.findViewById(R.id.deleteButton);
deleteButton.setOnClickListener(new DeleteClickListener(tablerow));
table.addView(tablerow);
tablerow = inflater.inflate(R.layout.rowelement, table,false);
deleteButton = (Button)tablerow.findViewById(R.id.deleteButton);
deleteButton.setOnClickListener(new DeleteClickListener(tablerow));
table.addView(tablerow);
}