Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


Cómo crear findViewById parm de forma dinámica o programática en tiempo de ejecución

Tengo una disposición del xml que exhibirá una rejilla compuesta de textviews dentro de tablerows. Los nombres de textview son cell00, cell01, etc. En tiempo de ejecución, mi programa determinará qué celda necesita ser cambiada.

¿Hay una manera de obtener un nombre de formato para que se puede pasar al método findViewById en tiempo de ejecución? Por ejemplo, si cell00 es necesario, ¿cómo puedo generar el parm en este código?

TextView currcell = (TextView) findViewById(R.id.cell00) 

Algo como "celda" +00 no se compila porque el método findViewById no acepta un tipo String. No quiero tener cada nombre de texto en la cuadrícula hardcoded en el programa – debe haber una mejor manera.

Gracias por cualquier ayuda que pueda proporcionar.

  • Redondear el doble a número entero?
  • ¿Alguna razón para retrasar el bloqueo de una aplicación gratuita?
  • Al hacer clic en Notificación no se inicia la actividad prevista?
  • Detectar memoria disponible dentro de un WebView
  • El tamaño de la imagen aumenta cuando se convierte de jpg a webp con un valor de calidad 100
  • La creación del teléfono no muestra la pantalla de bienvenida
  • Matrices OpenGL - no pueden figurar las correctas
  • Pantalla de llamada entrante android
  • 2 Solutions collect form web for “Cómo crear findViewById parm de forma dinámica o programática en tiempo de ejecución”

    Puede utilizar la reflexión para encontrar el valor entero de una variable con nombre en R.id.

     Class clazz = R.id.class; Field f = clazz.getField("cell" + "00"); int id = f.getInt(null); // pass in null, since field is a static field. TextView currcell = (TextView) findViewById(id); 

    Tenga en cuenta que la reflexión puede ser lenta. Si lo hace mucho, es posible que desee almacenar valores en caché o crear una forma diferente.

     int id = getResources().getIdentifier("cell00", "id", getPackageName()); TextView currcell = (TextView) findViewById(id); 

    Al igual que Mayra, el código también utiliza la reflexión, así que ten cuidado.

    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.