2015-01-02 2 views
0

Я хочу закодировать таблицу с некоторыми динамическими TableRows. Каждый TableRow имеет кнопку «Row-Delete-Button», которая удаляет строку, в которой находится кнопка. Поэтому каждая кнопка должна удалить свой собственный TableRow.Удаление таблицыRow динамически

Для тестирования я попробовал свой код с 2 закодированных строк:

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

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

Теперь я добавил OnClickListener:

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. Есть ли решение для моей проблемы?

ответ

1

Вам необходимо создать прослушиватель для каждой кнопки удаления, используя findViewById в каждой строке таблицы.

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); 
} 
+0

Вы правы ... Я достиг цели несколько минут назад самостоятельно ... Спасибо вам все равно – Billabong