How to access a text of a btn within a tableLayout?

0

I am filling in a tableLayout manually, but I can not access the text of the button that is inside the row.

I have a Table class

public class Tabla {
private TableLayout tabla; // Layout donde se pintará la tabla
private ArrayList<TableRow> filas; // Array de las filas de la tabla
private Activity actividad;
private Resources rs;
private String Elemento;
private int FILAS, COLUMNAS; // Filas y columnas de nuestra tabla

/**
 * Constructor de la tabla
 * @param actividad Actividad donde va a estar la tabla
 * @param tabla TableLayout donde se pintará la tabla
 */
public Tabla(Activity actividad, TableLayout tabla)
{
    this.actividad = actividad;
    this.tabla = tabla;
    rs = this.actividad.getResources();
    FILAS = COLUMNAS = 0;
    filas = new ArrayList<TableRow>();
}

/**
 * Agrega una fila a la tabla
 * @param elementos Elementos de la fila
 */
public void agregarFilaTabla(ArrayList<String> elementos)
{
    TableRow.LayoutParams layoutCelda;
    TableRow.LayoutParams layoutFila = new TableRow.LayoutParams(TableRow.LayoutParams.WRAP_CONTENT, TableRow.LayoutParams.WRAP_CONTENT);
    TableRow fila = new TableRow(actividad);
    fila.setLayoutParams(layoutFila);

    for(int i = 0; i< elementos.size(); i++)
    {
        TextView texto = new TextView(actividad);
        Button mbtn = new Button(actividad);
        Elemento =String.valueOf(elementos.get(i));
        mbtn.setText(String.valueOf(elementos.get(i)));
        texto.setText(String.valueOf(elementos.get(i)));
        texto.setGravity(Gravity.CENTER_HORIZONTAL);
         layoutCelda = new TableRow.LayoutParams(obtenerAnchoPixelesTexto(texto.getText().toString()), TableRow.LayoutParams.WRAP_CONTENT);
        texto.setLayoutParams(layoutCelda);
        mbtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Log.i(TAG, "onClick: brn "+ view.toString());
            }
        });
        fila.addView(mbtn);
    }
    tabla.addView(fila);
    filas.add(fila);
    FILAS++;
}

/**
 * Obtiene el ancho en píxeles de un texto en un String
 * @param texto Texto
 * @return Ancho en píxeles del texto
 */
private int obtenerAnchoPixelesTexto(String texto)
{
    Paint p = new Paint();
    Rect bounds = new Rect();
    p.setTextSize(50);

    p.getTextBounds(texto, 0, texto.length(), bounds);
    return bounds.width();
}

}

But the setOnClickListener always returns the last position of the table, that is, the last thing that happens through the variable ArrayList elements

This way I fill the table

 Tabla tabla = new Tabla(this, (TableLayout)findViewById(R.id.tabla));
    for(int i = 0; i < 15; i++)
    {
        ArrayList<String> elementos = new ArrayList<String>();
      elementos.add(Integer.toString(i));
       elementos.add("btn [" + i + ", 0]");
       elementos.add("Casilla [" + i + ", 1]");
       elementos.add("Casilla [" + i + ", 2]");
       elementos.add("Casilla [" + i + ", 3]");
        tabla.agregarFilaTabla(elementos);
    }

The logi returns me "Box 14.3

    
asked by Alldesign Web 27.12.2017 в 01:34
source

0 answers