动态删除TableRow

时间:2015-01-02 22:04:47

标签: android onclicklistener tablelayout tablerow

我想用一些动态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。 我的问题有解决方案吗?

1 个答案:

答案 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);
}