首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >动态删除TableRow

动态删除TableRow
EN

Stack Overflow用户
提问于 2015-01-02 22:04:46
回答 1查看 620关注 0票数 0

我想用一些动态TableRows来编写一个表。每个TableRow都有一个“行-删除-按钮”,它删除按钮所在的行。因此,每个按钮都应该删除自己的TableRow。

为了进行测试,我用两个硬编码行尝试了我的代码:

代码语言:javascript
复制
tablerow = inflater.inflate(R.layout.rowelement,null,false);
table.addView(tablerow);

tablerow = inflater.inflate(R.layout.rowelement,null,false);
table.addView(tablerow);

现在我添加了一个OnClickListener:

代码语言:javascript
复制
 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工作。有办法解决我的问题吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-01-02 22:42:36

您需要在每个表行上使用findViewById为每个delete按钮创建一个侦听器。

代码语言:javascript
复制
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);
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27749154

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档