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