2012-06-15 5 views
2

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

+1

Покажите нам код? что вы сделали до сих пор? нам нужно знать, как вы реализовали список – Th0rndike

+0

Смотрите здесь: http://stackoverflow.com/questions/3905616/how-to-delete-a-row-in-tablelayout-dynamically – MAV

ответ

6

onClick на кнопке даст вам щелчок, кнопка в вашем случае. Родитель этой кнопки - это строка, которую вы хотите удалить. Удаление этой строки из ее родителя избавится от нее.

примера того, как можно реализовать это:

button.setOnClickListener(new OnClickListener() 
    { 
     @Override public void onClick(View v) 
     { 
      // row is your row, the parent of the clicked button 
      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(); 
     } 
    }); 
3

Вам необходимо назначить идентификатор для динамического добавления строк и с использованием того, что вы можете получить значение этой конкретной строки или вы можете также удалить строка, которую вы нажимаете на кнопку строки.

В OnCreate(): -

addButton.setOnClickListener(new OnClickListener() { 

       @Override 
       public void onClick(View v) { 
        mTable.addView(addRow(mInput.getText().toString())); 
       } 
      }); 

private TableRow addRow(String s) { 
      TableRow tr = new TableRow(this); 
      tr.setId(1000 + sCount); 
      tr.setLayoutParams(new TableLayout.LayoutParams(
        TableLayout.LayoutParams.FILL_PARENT, 
        TableLayout.LayoutParams.WRAP_CONTENT)); 
      TableRow.LayoutParams tlparams = new TableRow.LayoutParams(
        TableRow.LayoutParams.WRAP_CONTENT, 
        TableRow.LayoutParams.WRAP_CONTENT); 
      TextView textView = new TextView(this); 
      textView.setLayoutParams(tlparams); 
      textView.setText("New text: " + s); 
      tr.addView(textView); 
      TableRow.LayoutParams blparams = new TableRow.LayoutParams(
        TableRow.LayoutParams.WRAP_CONTENT, 
        TableRow.LayoutParams.WRAP_CONTENT); 
      final Button button = new Button(this); 
      button.setLayoutParams(blparams); 
      button.setText(" - "); 
      button.setId(2000 + sCount); 
      button.setOnClickListener(new OnClickListener(){ 

       @Override 
       public void onClick(View v) {    
        mTable.removeView(findViewById(v.getId() - 1000)); 
       }   
      }); 
      tr.addView(button); 
      sCount++; 
      return tr; 
    } 

TableLayout: -

<?xml version="1.0" encoding="utf-8"?> 
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" > 

    <LinearLayout 
     android:id="@+id/parent" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:orientation="vertical" > 

     <EditText 
      android:id="@+id/editText1" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" /> 

     <Button 
      android:id="@+id/add" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" /> 

     <TableLayout 
      android:id="@+id/table1" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" > 
     </TableLayout> 
    </LinearLayout> 

</ScrollView> 
Смежные вопросы