开发者

How to access a string using a dynamic string name in android (similar to eval in javascript)?

开发者 https://www.devze.com 2023-03-10 04:39 出处:网络
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

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>
0

精彩评论

暂无评论...
验证码 换一张
取 消