2012-02-22 14 views
6

से शुरू होने वाले ड्रॉबल फ़ोल्डर में आइटमों की गणना करें मैं "fr" से शुरू होने वाले ड्रॉबल फ़ोल्डर में आइटम्स की संख्या कैसे गिनता हूं?विशिष्ट स्ट्रिंग

पृष्ठभूमि; मैं drawables फ़ोल्डर से यादृच्छिक छवि लेने के लिए एक randomizer बनाना चाहता हूँ। इसे भविष्य के सबूत बनाने के लिए, मैं यादृच्छिकता का अधिकतम मान चुनने के लिए पात्र वस्तुओं की संख्या को सेट करना चाहता हूं ..

उत्तर

10

एंड्रॉइड में अन्य संसाधनों की तरह, ड्रॉबल्स को 'आर' कक्षा के माध्यम से एक्सेस किया जाता है, जो कि है स्थैतिक पूर्णांक फ़ील्ड युक्त स्थिर वर्गों का संग्रह। प्रतिबिंब का उपयोग करने के अलावा कोई भी "सभी ड्रॉइंग नाम प्राप्त नहीं करें" मेट्रोड (कम से कम मुझे यह नहीं पता)।

आपको यादृच्छिक बनाने के लिए ड्रॉइंग आईडी की एक सूची की आवश्यकता होगी। आप स्वचालित रूप से प्रतिबिंब का उपयोग कर इस सूची को भरने कर सकते हैं:

import java.lang.reflect.Field; 
    ... 
    Field[] fields = R.drawable.class.getFields(); 
    List<Integer> drawables = new ArrayList<Integer>(); 
    for (Field field : fields) { 
     // Take only those with name starting with "fr" 
     if (field.getName().startsWith("fr")) { 
      drawables.add(field.getInt(null)); 
     } 
    } 

इस तरह आप ड्रॉएबल आपकी रुचि है की आईडी की एक सूची प्राप्त। आप बाद में उन आईडी का उपयोग कर सकते हैं जहां आप आमतौर पर उपयोग करेंगे। R.drawable.someResource

+0

बढ़िया! field.get (i) आईडी प्राप्त करेगा, int मुझे फ़ील्ड.size() के साथ अधिकतम मान के रूप में यादृच्छिक बनाया जा सकता है। धन्यवाद!! –

+0

टॉमस, आपके उत्तर के लिए धन्यवाद मैं https://play.google.com/store/apps/details?id=happyworx.nl.Applez लिखने में सक्षम था। धन्यवाद! –

+0

क्या यह उत्तर अभी भी अद्यतित है या पिछले तीन वर्षों में कोई बेहतर तरीका सामने आया है? – SuperBiasedMan

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