我想用一些动态TableRows编写一个表。 每个TableRow都有一个" Row-Delete-Button"删除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仅适用于一个(第一个)TableRow。 我的问题有解决方案吗?
答案 0 :(得分:1)
您需要在每个表格行上使用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);
}