2011-06-04 22 views
7

मैं अपनी गैलरी की स्थिति के आधार पर गतिशील नामों का उपयोग करके स्ट्रिंग चर का उपयोग करने का प्रयास कर रहा हूं। ,एंड्रॉइड में एक गतिशील स्ट्रिंग नाम का उपयोग कर स्ट्रिंग का उपयोग कैसे करें (जावास्क्रिप्ट में eval के समान)?

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

मेरे तार pic1info नाम हैं pic2info, pic3info आदि और मैं स्थिर बदलना चाहते हैं: एक निश्चित नाम का उपयोग कर रहा निम्नलिखित (स्ट्रिंग कहा जाता है pic1info) जो ठीक है का उपयोग एक स्ट्रिंग का मूल्य प्राप्त करने के लिए pic1info की परिभाषा शामिल करने के लिए स्थिति इतनी ऊपर pic1info के स्थान पर निम्न स्ट्रिंग की सामग्री को पारित इतना है कि यह वर्तमान स्थिति के आधार पर एक अलग स्ट्रिंग रिटर्न:

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

जावास्क्रिप्ट में बराबर eval होगा, i ' मुझे यकीन है कि ऐसा करने का एक आसान तरीका है लेकिन मैं कैसे काम नहीं कर सकता!

आपकी मदद के लिए बहुत बहुत धन्यवाद!

डेव

उत्तर

2

नहीं, ऐसा करने के लिए जावा में कोई आसान तरीका है, लेकिन आप ints, जहां प्रत्येक सूचकांक कि स्ट्रिंग के आर-मूल्य का प्रतिनिधित्व करता की एक सरणी बना सकते हैं।

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

एक स्ट्रिंग हो रही है तो बन गयी:

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

ब्रिलि चींटी धन्यवाद इतना सही है :) – deshg

13

उपयोग करें: android.content.res.Resources.getIdentifier

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

यह उत्तर बहुत धीमा है, क्योंकि इसे जावा में प्रतिबिंब के उपयोग की आवश्यकता होगी। उत्पादन कोड में इस विधि का उपयोग करके बहुत सावधान रहें। – Sam

2

काज के जवाब से प्रेरित होकर, आप भी अपने एक्सएमएल फ़ाइल में एक String array रख सकते हैं:

<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> 
संबंधित मुद्दे