2011-04-05 112 views
9
void init() 
{ 
    intcolumnwidth1 = int_scr_wd*55; 
    intcolumnwidth1 = intcolumnwidth1/100; 
    for (int i = 0; i < strarr.length-1; i++) 
    { 
     strinarr = fun1.split(strarr[i].trim(),"^"); 
     tr1 = (TableRow) new TableRow(this); 
     txt1=new TextView(this); 
     txt1.setWidth(intcolumnwidth1); 
     txt1.setText(strinarr[0]); 
     tr1.addView(txt1); 
     tl.addView(tr1,new TableLayout.LayoutParams(layoutParams)); 
    } 
} 

Escenario es cuando por primera vez abro esta página agrega dinámicamente filas en el diseño de la tabla ... pero si después de algún tiempo los datos en la base de datos cambian ... Cuando hago clic en el botón Actualizar, agrego los datos nuevos después de los datos anteriores en el diseño de la tabla ... todo lo que necesito es la solución para actualizar o eliminar la vista de texto que ya existe en el diseño de la tabla ...cómo eliminar la fila de la tabla en el diseño de la tabla en android

thanx ..

Respuesta

13

Trate removeView

row = (TableRow)findViewById(R.id.row); 
table.removeView(row); 
+8

Creo que es muy poco probable que las filas se tienen ID estáticas si están agregado dinámicamente –

2

Necesita saber la vista de texto que se eliminará. El TextView se puede identificar configurando un ID único usando setId() o usando una etiqueta única usando setTag().

Puede identificarse mediante TextView tv = (TextView) tr1.findViewByTag (etiqueta única);

Utilice quitar vista para eliminar la vista.

6

Las otras soluciones requieren que sus filas tengan identificadores únicos.

Si no tienen identificadores únicos entonces cómo sobre el uso de:

tl.removeView(rowIndex); 

En cualquier caso, usted debe tratar de aprender a usar SimpleCursorAdapterCursorAdapter o porque están diseñados específicamente para mostrar el contenido de una base de datos consulta en una lista. Ver Binding to Data with AdapterView.

9

Me doy cuenta de que este es un hilo viejo, pero estoy tan sorprendido cuando me encontré con esto sin una respuesta decente.

lo hago de esta manera:

TableLayout table = (TableLayout) findViewById(R.id.myTable);  
table.removeAllViews(); 

que eliminará todos los puntos de vista del niño, en este caso las filas y todo. Por su descripción, no parece que quiera eliminar solo una fila, sino que desea eliminarlas y luego cargar las filas nuevamente. El código anterior hará la parte de eliminación.

+0

gracias, quiero esto ... –

1

mirar este código para eliminar la fila en la tabla

private List<View> listViewRow; 

if (listViewRow.size() > 0) { 
    for (View view : listViewRow) { 
     table.removeView(view); 
    } 
} 

for (int i = 0; i < myList.size(); i++) { 
    row.addView((new TextView(context).setText("Teste")), 0); 
    row.addView((new TextView(context).setText("Teste")), 1); 
    row.addView((new TextView(context).setText("Teste")), 2); 

    listViewRow.add(row); 
    table.addView(row, 1); 
} 
0

Utilice esta:

new Handler().postDelayed(new Runnable() { 
     public void run() { 
     TableRow row = (TableRow)table.getChildAt(i); 
     table.removeView(row); 
     } 
}, 100); 

Donde i - es la posición de la fila, cosa que se desea eliminar.

13

Este método que he escrito elimina todas las filas excepto la primera. Es útil si no desea eliminar la fila de encabezado, por ejemplo:

private void cleanTable(TableLayout table) { 

    int childCount = table.getChildCount(); 

    // Remove all rows except the first one 
    if (childCount > 1) { 
     table.removeViews(1, childCount - 1); 
    } 
} 
2

utilizo este:

tl.removeView(tl.getChildAt(index)); 
+0

Agregue una explicación con la respuesta de cómo esta respuesta ayuda a OP a corregir el problema actual –

Cuestiones relacionadas