entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

1voto

Como modificar textviews con una estructura repetitiva?

Hice una aplicacion en android que simplemente emula la sucesión Fibonacci, con la diferencia de que en la mia, todo inicia en 2 numeros adquiridos por medio de editTexts. En cada suma es posible que sucedan errores (generados por el mismo programa), por esto, creé un boton de verificación.

Estoy mostrando cada resultado y verificación en un TextView diferente, pero pienso que lo estoy haciendo de una manera tosca y poco optima, quisiera que me ayudaran optimizando estas porciones de codigo, gracias!

        //Me gustaria evitar usar tantos setText
        // y en lugar de eso, implementar una estructura repetitiva
        tvr0.setText(""+result[2]);
        tvr1.setText(""+result[3]);
        tvr2.setText(""+result[4]);
        tvr3.setText(""+result[5]);
        tvr4.setText(""+result[6]);

Y aqui

        //compara un array correcto con el que posiblemente tiene errores
        if(result[6] != comp[6])
            tvcr0.setText("Sum5=E");
        else
            tvcr0.setText("");

        if(result[5] != comp[5])
            tvcr1.setText("Sum4=E");
        else
            tvcr1.setText("");

        if(result[4] == comp[4])
            tvcr2.setText("");
        else
            tvcr2.setText("Sum3=E");

        if(result[3] == comp[3])
            tvcr3.setText("");
        else
            tvcr3.setText("Sum2=E");

        if(result[2] == comp[2])
            tvcr4.setText("");
        else
            tvcr4.setText("Sum1=E");

Así se ve el xml:imagen

1voto

wroque comentado

es una lista lo que intentas visualizar en android ?, porque te podría servir un adapter.

1voto

Lukard comentado

Si en vez de la lista (que seria lo oportuno para tu caso) quieres seguir utilizando la consecución de TextViews, yo lo que te recomiendo es meterlos dentro de un ArrayList<TextViews> y recorrerlos con un bucle:

ArrayList<TextViews> tvs = new ArrayList<>();
tvs.add(tvr0);
tvs.add(tvr1);
...

for (int i = 0; i < tvs.size(); i++) {
  tvr.get(i).setText("" + result[i+2]);
}

Y lo mismo para las condiciones:

for (int i = 0; i < tvs.size(); i++) {
  if (result[6 - i] != comp[6 - i]) 
    tvs.get(i).setText("Sum" + (5 - i) + "=E");
  else
    tvs.get(i).setText("");
}

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta