Как удалить строку в TableLayout динамически

1

У меня есть TableLayout, для которого я добавил строки динамически. В каждой строке есть 2 элемента, одним из которых является TextView other Button.Когда я нажимаю кнопку, которая присутствует в строке, эта строка должна быть удалена. Как это можно сделать в Android? Как найти rowid и как удалить строку динамически. может кто-нибудь помочь мне в решении этой проблемы.

Спасибо, Advance,

Теги:

3 ответа

0

При добавлении строки можно назначать теги или идентификатор. Затем просто используйте этот тег /id, чтобы удалить эту строку.

TableLayout table;  // global access, probably initialized in onCreate()

// initialization, etc.

Создайте элемент, который будет добавлен в TableLayout, TableRow с TextView и Button, затем вызовите addDeleteClick(yourButton, uniqueTag), прежде чем добавлять его в TableLayout.

// example of adding a text view and a button the the TableLayout
void addToTableLayout(String text, String uniqueTag) {
    TableRow tr = new TableRow(yourActivity);
    // set the unique tag that will be used when deleting this row
    tr.setTag(uniqueTag);
    // do what you need with the button and textview
    TextView tv = new TextView(yourActivity);
    tv.setText(text);
    Button bt = new Button(yourActivity);
    // add delete click capability to the button
    addDeleteClick(bt, uniqueTag);
    table.addView(tr, new TableLayout.LayoutParams(
                LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT));
}

// Adds the delete on click capability to a button 
// to delete a row from TableLayout based on its tag
void addDeleteClick(Button bt, final String tag) {
    bt.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View arg0) {
            Log.d("TableLayout", " deleting row with tag " + tag);
            deleteRow(tag);
        }

    });
}

// delete a row from TableLayout based on its tag
void deleteRow(String tag) {
    View removedRow = table.findViewWithTag(tag);
    table.removeView(removedRow);
    table.invalidate();
}
0

Попробуйте следующее:

public void onClick(View v) {
      // TODO Auto-generated method stub

      TableRow t = (TableRow) v.getParent();
      TextView firstTextView = (TextView) t.getChildAt(0);
      code = firstTextView.getText().toString();

      System.out.println("code>>>>>>" + code);

      View row = (View) v.getParent();
      // container contains all the rows, you could keep a
      // variable somewhere else to the container which you
      // can refer to here
      ViewGroup container = ((ViewGroup) row.getParent());
      // delete the row and invalidate your view so it gets
      // redrawn
      container.removeView(row);
      container.invalidate();
}
0

Попробуйте такой подход:

    TableRow tableRow;
    TextView tv;
    Button button;
    //...
    tableRow.addView(tv)
    tableRow.addView(button);


    //somewhere where you want to delete
    ViewGroup parent=button.getParent();
    if(parent instanceof TableRow)
        //do deleting task
  • 0
    В настоящее время мой дизайн меняется, я динамически добавляю Textview и флажок в виде строки в таблицу. За столом у меня есть кнопка. Когда я нажимаю кнопку, и если флажок установлен в какой-либо строке, то эта конкретная строка должна быть удалена. Как узнать, какой флажок установлен? Как мне нужно знать, является ли это ViewParent или ViewGroup
  • 0
    Вам нужно знать дескриптор TableLayout и, используя его дескриптор, вы можете перечислить все доступные дочерние представления, чтобы вы знали флажки. Как вы знаете, флажок у вас может быть это TableRow

Ещё вопросы

Сообщество Overcoder
Наверх
Меню