I'm trying to access string variables using dynamic names depending on what p开发者_开发技巧osition 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
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]);
Inspired by Kaj's answer, you can also put a String array in your XML file:
<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>
精彩评论