我想用一些动态TableRows来编写一个表。每个TableRow都有一个“行-删除-按钮”,它删除按钮所在的行。因此,每个按钮都应该删除自己的TableRow。
为了进行测试,我用两个硬编码行尝试了我的代码:
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工作。有办法解决我的问题吗?
发布于 2015-01-02 22:42:36
您需要在每个表行上使用findViewById为每个delete按钮创建一个侦听器。
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);
}https://stackoverflow.com/questions/27749154
复制相似问题