У меня есть TableLayout с динамически добавляемыми TableRows в зависимости от размера курсора. В каждую строку я добавляю кнопку Удалить, для которой установлено значение Невидимый. Каждая строка и кнопка при создании получают одинаковый идентификатор, если они принадлежат одной и той же строке. КОГДА пользователь выполняет LongClicks в TableRow, вместо этого видимость устанавливается на Visible
и появляется кнопка Удалить.
В прослушивателе OnLongClick
я проверяю, совпадает ли идентификатор кнопки с представлением (здесь 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)
, я вижу, что у них один и тот же идентификатор.
Я тоже пытался использовать 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);