I'm trying to access string variables using dynamic names depending on what position my gallery is at. To get the value of a string using a fixed name I use the following which is fine (the string is called pic1info):
String strTest = getResources().getString(R.string.pic1info);
My strings are named pic1info, pic2info, pic3info etc and I want to replace the static definition of pic1info to include the position so pass the contents of the following string in place of pic1info above so that it returns a different string depending on the current position:
String strDynamicStringName= "pic" + position + "info";
In javascript the equivalent would be eval, i'm sure there's a simple way to do this but i can't work out how!
Thanks so much for your help as ever!
Dave
There are no dynamic variables in Java. Java variables have to be declared in the source code1. Depending on what you are trying to achieve, you should use an array, a List or a Map ; e.g. It is possible to use reflection to dynamically refer to variables that have been declared in the source code.
Dynamic initialization of object refers to initializing the objects at run time i.e. the initial value of an object is to be provided during run time. Dynamic initialization can be achieved using constructors and passing parameters values to the constructors.
use this: android.content.res.Resources.getIdentifier
int resID = getResources().getIdentifier("pic" + position + "info", "string", getPackageName());
String strTest = getResources().getString(resID);
No, there's no simple way to do that in Java, but you can create an array of ints, where each index represents the R-value of that string.
private static final int[] LOOKUP_TABLE = new int[] {
R.string.pic1info,
R.string.pic2info,
R.string.pic3info,
R.string.pic4info
};
Getting a string would then become:
String strTest = getResources().getString(LOOKUP_TABLE[position]);
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With