2011-10-29 7 views
9

का कहना है कि मैं स्ट्रिंगएंड्रॉइड, R.drawable में संदर्भ चीजें। चर का उपयोग कर?

के मान के आधार पर R.drawable.* में छवि फ़ाइल को गतिशील रूप से लोड करना चाहता हूं, क्या ऐसा करने का कोई तरीका है? ऐसा लगता है जैसे मैं स्थिर R.

उत्तर

11

क्या आपने XML फ़ाइल में छवि के लिए आईडी घोषित की है? यदि आपने किया है, तो आप निम्न विधि का उपयोग कर सकते हैं:

मान लें कि आपके पास अपने res/drawable फ़ोल्डर में picture.png है।

अपनी गतिविधि में, आप FirstActivity में main.xml फ़ाइल

<ImageView android:id="@+id/imageId" android:src="@drawable/picture"></ImageView> 

में अपनी छवि संसाधन सेट कर सकते हैं

//to retrieve image using id set in xml. 
String imageString = "imageId" 
int resID = getResources().getIdentifier(imageString , "id", "package.name"); 
ImageView image = (ImageView) findViewById(resID); 

imageString गतिशील नाम है। जिसके बाद आप गतिशील संसाधन के पहचानकर्ता प्राप्त कर सकते हैं।

एक अन्य विधि, आप यह कर सकते हैं:

//to retrieve image in res/drawable and set image in ImageView 
String imageName = "picture" 
int resID = getResources().getIdentifier(imageName, "drawable", "package.name"); 
ImageView image; 
image.setImageResource(resID); 

आप अपनी छवि संसाधन का संदर्भ और यह करने के लिए अपने imageView सेट करने के लिए सक्षम हो जाएगा।

+0

धन्यवाद, इस विधि के लिए काम करने के लिए मुझे AndroidManifest.xml फ़ाइल में छवि घोषित करने की आवश्यकता होगी, या कोई और फ़ाइल है? मैं इस पर अच्छी जानकारी नहीं पा रहा था, लेकिन मैबी मैं गलत चीज़ की खोज कर रहा हूं – Hoofamon

+0

मैंने अपना उदाहरण संपादित किया है। छवियों को पुनः प्राप्त करने के 2 तरीके जोड़े गए। आपकी गतिविधि के लिए एक्सएमएल में आईडी के माध्यम से गतिशील रूप से एक है। अन्य 'गतिशील/खींचने योग्य' फ़ोल्डर से गतिशील रूप से। आपको AndroidManifest.xml में छवियां घोषित करने की आवश्यकता नहीं है। – newbie

+0

को फिर से भरने की आवश्यकता है .. एक विधि छवि को गतिशील रूप से पुनर्प्राप्त करना है। दूसरा छवि सेट करना है। सुनिश्चित नहीं है कि आप – newbie

8
int drawableId = getResources().getIdentifier(drawablename, "drawable", getPackageName()); 
imageview.setImageResource(drawableId); 

में कुछ भी उल्लेख करने के लिए इस प्रयास करें की जरूरत है। यह काम करना चाहिए।

+1

क्या होगा यदि मुझे स्क्रीन के आधार पर फ़ोल्डर से छवि चुननी है i.e. hdpi, xhdpi, xxhdpi ?? –

1
Class res = R.string.class; 
Field field = res.getField("x" + pos); 
headerId = field.getInt(null); 
header.setText(headerId); 

यह ड्रॉबल्स के साथ भी काम करता है, बस स्ट्रिंग को संपादित करें। हेडर भाग की आवश्यकता नहीं है, यह केवल कुछ उदाहरण है जिसे मैंने कुछ समय पहले लिखा था।

संबंधित मुद्दे