动态删除 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);
}