我有一个 TableLayout,它根据光标的大小动态添加 TableRows。在每一行中,我添加了一个删除按钮,该按钮设置为不可见。每行和按钮在创建时都会获得一个相同的 id,如果然后属于同一行。当用户 LongClicks 上的 TableRow 时,可见性设置为Visible
改为并出现删除按钮。
在OnLongClick
侦听器中,我检查按钮 ID 是否与单击的视图(此处为 TableRow)相同。
rel.addView(btnDelete);
tr.addView(rel);
tr.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View view) {
int tableRowId = view.getId();
if(tableRowId == btnDelete.getId()){
btnDelete.setVisibility(View.INVISIBLE);
}
return true;
}
});
但它似乎只适用于底部最低按钮上的按钮。因此,似乎btnId
存储为最后btnId
添加的,因为唯一TableRow
正确的是最后一个。但是当我使用时,.setText(btnId + tableRowId)
我可以看到它们一直都有相同的 id。
我也尝试使用 Tag,但我偶然发现了同样的问题。
非常感谢!
编辑:
btnDelete = new Button(this);
btnDelete.setId(revolutionCounter);
params.addRule(RelativeLayout.ALIGN_PARENT_RIGHT,
RelativeLayout.TRUE);
params.addRule(RelativeLayout.CENTER_VERTICAL);
btnDelete.setLayoutParams(params);
rel.addView(btnDelete);//a relativelayout inside the tablerow
tr.addView(rel);
然后我将 tr (tablerow) 添加到 tablelayout。所以我想我正在重用按钮?我应该如何去创造新的?我以为这就是我正在做的new Button(this);