मैं R.drawable.*
एक एक्सएमएल मान फ़ाइल का उपयोग करके एक सरणी के अंदर ड्रा करने योग्य संसाधनों की आईडी को स्टोर करना चाहूंगा , और फिर अपनी गतिविधि में सरणी को पुनः प्राप्त करूंगा।
कैसे प्राप्त करने के लिए कोई विचार?
मैं R.drawable.*
एक एक्सएमएल मान फ़ाइल का उपयोग करके एक सरणी के अंदर ड्रा करने योग्य संसाधनों की आईडी को स्टोर करना चाहूंगा , और फिर अपनी गतिविधि में सरणी को पुनः प्राप्त करूंगा।
कैसे प्राप्त करने के लिए कोई विचार?
जवाबों:
आप अपने फ़ोल्डर में फ़ाइल में एक टाइप की गई सरणी का उपयोग arrays.xml
करते हैं /res/values
जो इस तरह दिखाई देती है:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<integer-array name="random_imgs">
<item>@drawable/car_01</item>
<item>@drawable/balloon_random_02</item>
<item>@drawable/dog_03</item>
</integer-array>
</resources>
फिर अपनी गतिविधि में, उन्हें इस तरह एक्सेस करें:
TypedArray imgs = getResources().obtainTypedArray(R.array.random_imgs);
// get resource ID by index
imgs.getResourceId(i, -1)
// or set you ImageView's resource to the id
mImgView1.setImageResource(imgs.getResourceId(i, -1));
// recycle the array
imgs.recycle();
में value
फ़ोल्डर बनाने के xml
फ़ाइल नाम यह arrays.xml
इस तरह से यह करने के लिए डेटा जोड़ने
<integer-array name="your_array_name">
<item>@drawable/1</item>
<item>@drawable/2</item>
<item>@drawable/3</item>
<item>@drawable/4</item>
</integer-array>
फिर इसे इस तरह से अपने कोड में प्राप्त करें
private TypedArray img;
img = getResources().obtainTypedArray(R.array.your_array_name);
फिर निम्न कोड के उपयोग के रूप में उदाहरण Drawable
के img
TypedArray
लिए इनमें से एक का ImageView
background
उपयोग करने के लिए
ImageView.setBackgroundResource(img.getResourceId(index, defaultValue));
सूचकांक
कहां index
है एक मूल्य है जो आप देते हैं अगर इस पर कोई आइटम नहीं हैDrawable
defaultValue
index
TypedArray
इस लिंक पर जाने के बारे में अधिक जानकारी के लिए
http://developer.android.com/reference/android/content/res/Typedr.gov.in
आप इसका उपयोग अन्य संसाधनों की एक सरणी बनाने के लिए कर सकते हैं, जैसे कि ड्रॉबल्स। ध्यान दें कि सरणी को सजातीय होने की आवश्यकता नहीं है, इसलिए आप मिश्रित संसाधन प्रकारों की एक सरणी बना सकते हैं, लेकिन आपको पता होना चाहिए कि सरणी में डेटा प्रकार क्या और कहाँ हैं।
<?xml version="1.0" encoding="utf-8"?>
<resources>
<array name="icons">
<item>@drawable/home</item>
<item>@drawable/settings</item>
<item>@drawable/logout</item>
</array>
<array name="colors">
<item>#FFFF0000</item>
<item>#FF00FF00</item>
<item>#FF0000FF</item>
</array>
</resources>
और इस तरह से अपनी गतिविधि में संसाधन प्राप्त करें
Resources res = getResources();
TypedArray icons = res.obtainTypedArray(R.array.icons);
Drawable drawable = icons.getDrawable(0);
TypedArray colors = res.obtainTypedArray(R.array.colors);
int color = colors.getColor(0,0);
का आनंद लें!!!!!
कोटलिन रास्ता यह हो सकता है:
fun Int.resDrawableArray(context: Context, index: Int, block: (drawableResId: Int) -> Unit) {
val array = context.resources.obtainTypedArray(this)
block(array.getResourceId(index, -1))
array.recycle()
}
R.array.random_imgs.resDrawableArray(context, 0) {
mImgView1.setImageResource(it)
}
कोटलिन में, आप निम्न कार्य कर सकते हैं: -
<integer-array name="drawer_icons">
<item>@drawable/drawer_home</item>
</integer-array>
आपको संसाधन के रूप में छवि की सरणी मिल जाएगी TypedArray
val imageArray = resources.obtainTypedArray(R.array.drawer_icons)
सूचकांक द्वारा संसाधन आईडी प्राप्त करें
imageArray.getResourceId(imageArray.getIndex(0),-1)
या आप id पर imageView का संसाधन सेट कर सकते हैं
imageView.setImageResource(imageArray.getResourceId(imageArray.getIndex(0),-1))
और अंतिम में सरणी को रीसायकल करें
imageArray.recycle()
जहाँ तक मुझे पता है आप R.drawable में सरणियाँ संग्रहीत नहीं कर सकते।
आप क्या कर सकते हैं config.xml या strings.xml में एक सरणी बना सकते हैं जो एक उपनाम संसाधन का उपयोग करके एक आकर्षित करने योग्य संसाधन के लिए एक मार्ग का निर्माण करता है ।
देखें कि क्या यह काम करता है, और कृपया मुझे बताएं कि क्या आपको किसी अतिरिक्त सहायता की आवश्यकता है।