Cómo acceder a una cadena utilizando un nombre de cadena dinámica en android (similar a eval en javascript)?

Estoy tratando de acceder a variables de cadena utilizando nombres dinámicos dependiendo de qué posición está mi galería. Para obtener el valor de una cadena usando un nombre fijo, utilizo lo siguiente que está bien (la cadena se llama pic1info):

String strTest = getResources().getString(R.string.pic1info); 

Mis cadenas se llaman pic1info, pic2info, pic3info etc y quiero reemplazar la definición estática de pic1info para incluir la posición para pasar el contenido de la siguiente cadena en lugar de pic1info por encima de modo que devuelve una cadena diferente en función de la posición actual:

 String strDynamicStringName= "pic" + position + "info"; 

En javascript el equivalente sería eval, estoy seguro de que hay una manera sencilla de hacer esto, pero no puedo trabajar cómo!

Muchas gracias por su ayuda como siempre!

Dave

No, no hay forma sencilla de hacerlo en Java, pero puede crear una matriz de ints, donde cada índice representa el valor R de esa cadena.

 private static final int[] LOOKUP_TABLE = new int[] { R.string.pic1info, R.string.pic2info, R.string.pic3info, R.string.pic4info }; 

Conseguir una cadena sería entonces:

 String strTest = getResources().getString(LOOKUP_TABLE[position]); 

Utilice esto: android.content.res.Resources.getIdentifier

 int resID = getResources().getIdentifier("pic" + position + "info", "string", getPackageName()); String strTest = getResources().getString(resID); 

Inspirado en la respuesta de Kaj, también puedes poner una matriz String en tu archivo XML:

 <resources> <string-array name="picInfos"> <item>value of pic1info goes here</item> <item>value of pic2info goes here</item> <item>value of pic3info goes here</item> </string-array> </resources> 
  • Android 4.0 -> 4.3 (incluido) - Almacenamiento web perdido entre las páginas de visualización web
  • Cómo configurar Android Studio en El Capitan (OS X 10.11)?
  • Combinación de objeto Realm y objeto Gson
  • Android requiere el nivel de cumplimiento del compilador 5.0 o 6.0. Se encontró '1.7' en su lugar. Utilice Herramientas de Android> Fijar propiedades del proyecto
  • Colorear botones en Android con AppCompat
  • Leer y mostrar texto de mensaje entrante android
  • ¿Cómo mantener la sesión de inicio de sesión de usuario?
  • GetPrimaryClip () devuelve ClipData {text / plain {NULL}}
  • El método getString (int) no está definido para el tipo Apps
  • Utilizar un Cursor devuelto desde un LoaderManager en un AsyncTask
  • Botón de Toggle de Android tamaño personalizado / relleno / espaciado
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.