tablas tabla style studio sirve que posiciones para generar editables dinamicas crear como activity 3x3 android

style - tablas editables en android studio



Cómo agregar filas dinámicamente en el diseño de la tabla (6)

Esta es la técnica que descubrí después de un poco de prueba y error que le permite conservar sus estilos XML y evitar los problemas de usar un <merge/> (es decir, inflar () requiere una fusión para adjuntar a la raíz, y devuelve el nodo raíz) . No se new TableRow() s o new TextView() .

Código

Nota: Aquí CheckBalanceActivity es un ejemplo de clase de Activity

TableLayout table = (TableLayout)CheckBalanceActivity.this.findViewById(R.id.attrib_table); for(ResourceBalance b : xmlDoc.balance_info) { // Inflate your row "template" and fill out the fields. TableRow row = (TableRow)LayoutInflater.from(CheckBalanceActivity.this).inflate(R.layout.attrib_row, null); ((TextView)row.findViewById(R.id.attrib_name)).setText(b.NAME); ((TextView)row.findViewById(R.id.attrib_value)).setText(b.VALUE); table.addView(row); } table.requestLayout(); // Not sure if this is needed.

attrib_row.xml

<?xml version="1.0" encoding="utf-8"?> <TableRow style="@style/PlanAttribute" xmlns:android="http://schemas.android.com/apk/res/android"> <TextView style="@style/PlanAttributeText" android:id="@+id/attrib_name" android:textStyle="bold"/> <TextView style="@style/PlanAttributeText" android:id="@+id/attrib_value" android:gravity="right" android:textStyle="normal"/> </TableRow>

Tengo ciertos datos en sqllite y se actualizan cada vez que lo deseo, hago clic en el botón Guardar y quiero mostrar los datos en un diseño de tabla para agregar más filas para los datos actualizados.

Tengo un código determinado, pero muestra solo los datos actualizados que reemplazan los datos anteriores y quiero agregar más filas a medida que los datos se actualizan.

Sé que esto es solo para agregar una fila al diseño de la tabla, pero ¿cómo puedo agregar más filas?

TableLayout tl=(TableLayout)findViewById(R.id.maintable); TableRow tr1 = new TableRow(this); tr1.setLayoutParams(new LayoutParams( LayoutParams.FILL_PARENT,LayoutParams.WRAP_CONTENT)); TextView textview = new TextView(this); textview.setText(data); //textview.getTextColors(R.color.) textview.setTextColor(Color.YELLOW); tr1.addView(textview); tl.addView(tr1, new TableLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));


La forma en que ha agregado una fila en el diseño de la tabla puede agregar varias instancias de TableRow en su objeto tableLayout

tl.addView(row1); tl.addView(row2);

etc ...


Solución 1. Establezca su TableLayout tl como variable de miembro de clase, solo llame a TableLayout tl=(TableLayout)findViewById(R.id.maintable); cuando inicias la clase. Cuando se presiona el botón, usa tl directamente, p. Ej. tl.addView (fila), ya no llama a FindViewById. Entonces la próxima fila nueva no reemplazaría la nueva fila anterior.

Solución 2. Cada vez que haga clic en el botón, guarde los datos actualizados en una matriz, y luego vuelva a procesar el diseño de toda la tabla mediante un ciclo en la matriz.


Tal vez sea mejor utilizar un ListView con un CursorAdapter (o SimpleCursorAdapter ).

Estos están diseñados para mostrar las filas de una base de datos sqlite y permiten la actualización con una programación mínima de su parte.

Editar : aquí hay un tutorial incluye SimpleCursorAdapter y ListView, incluido el código de muestra.


Tratar
new LayoutParams(LayoutParams.MATCH_PARENT,LayoutParams.WRAP_CONTENT));

en lugar de

new LayoutParams( LayoutParams.FILL_PARENT,LayoutParams.WRAP_CONTENT));


Usted lo está haciendo bien; cada vez que necesite agregar una fila, simplemente nueva TableRow() , etc. Sin TableRow() , le resultará más fácil inflate la nueva fila desde XML .