2012-01-07 12 views
14

मैंने सिस्टम फ़ाइल से BufferedReader टेक्स्ट के साथ पढ़ा; इस पाठ में, उदाहरण के लिए, 5 शब्द हैं, लेकिन किसी अन्य मामले में इसमें कम या अधिक शब्द हो सकते हैं। फिर मैंने इस पाठ (उल्लिखित शब्दों) को एक सिंगल स्ट्रिंग में रखा और उस स्ट्रिंग को साझा वरीयताओं में सहेजा। तब मैंने इस स्ट्रिंग से स्पिनर बनाया। कोड इस प्रकार है:स्पिनर में स्थिति कैसे सेट करें?

Spinner spinner = new Spinner(this); 
    ArrayAdapter<String> spinnerArrayAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_dropdown_item, yourString.split(" ")); 
    spinner.setAdapter(spinnerArrayAdapter); 

तो मैं किसी अन्य फ़ाइल से पाठ पढ़ने के। इस पाठ में हमेशा एक शब्द होता है। और यह शब्द उन शब्दों में से एक जैसा है जो मैंने पहली फ़ाइल से पढ़ा था (उदाहरण के लिए, यदि पहली फ़ाइल जिसे मैंने पढ़ा था तो 5 शब्द थे और इनमें से एक शब्द "काला" था, दूसरी फ़ाइल जिसे मैंने पढ़ा था "काला" है)। और मुझे अपने स्पिनर में डिफ़ॉल्ट चुने गए विकल्प के रूप में यह विशेष शब्द (जो दोनों फाइलों में मौजूद है) बनाने की आवश्यकता है।

उदाहरण के लिए:

पहले स्ट्रिंग है: लाल, नीले, पीले, काले, सफेद

दूसरा स्ट्रिंग है: पीला

मैं इतना में विकल्प पहली स्ट्रिंग से एक स्पिनर बनाना स्पिनर इस तरह से पॉप्युलेट किए गए हैं: "लाल, नीला, पीला, काला, सफेद" और डिफ़ॉल्ट चयनित विकल्प लाल है (क्योंकि यह मेरी पहली स्ट्रिंग में पहला होता है), लेकिन मुझे पीले रंग को डिफ़ॉल्ट रूप से चुनने की आवश्यकता है इस मामले में विकल्प, क्योंकि दूसरी स्ट्रिंग में शामिल है "पीला"। दोनों स्ट्रिंग में शब्द हमेशा अलग होते हैं।

बीटीडब्ल्यू: मुझे पता है कि स्पिनर में स्थिति को कैसे सहेजना है, लेकिन मुझे नहीं पता कि स्पिनर में स्थिति कैसे सेट करें यदि मैं दो तारों की तुलना करता हूं और उनमें से एक में अधिक शब्द होते हैं।

उत्तर

7

मैं इस लाइन आप

String[] a= new String[10]; 
a[0]="abc"; 
a[1]="xyz"; 
a[2]="pqr"; 
..... 
..... 
spin = (Spinner) findViewById(R.id.TimeSpinner); 
ArrayAdapter<String> adapter = new ArrayAdapter<String>(TimeSpin.this, android.R.layout.simple_spinner_item, a); 
    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item)‌​; 
    spin.setAdapter(adapter); 
    spin.setSelection(0); 
+0

मुझसे पूछते हैं अगर आप किसी भी आगे संदेह –

+0

नहीं, मैं केवल setPosition करने की जरूरत है, लेकिन यह अन्य मामला है, पहले मैं एक फ़ाइल से पाठ पढ़ने (उदाहरण के लिए इस पाठ 5 शब्द हैं और इन शब्दों में से तीसरा है "काला") मैं इन 5 शब्दों को एक स्ट्रिंग में सहेजता हूं। तब मैंने आपको इस स्ट्रिंग से स्पिनर बनाया जैसा आपने मुझे सलाह दी थी। फिर मैंने दूसरी फाइल से टेक्स्ट पढ़ा और इस पाठ में हमेशा एक शब्द होता है जो पहली फ़ाइल में एक शब्द जैसा होता है (उदाहरण के लिए दूसरी फ़ाइल में "काला" होता है) मैं इसे एक शब्द स्ट्रिंग में सहेजता हूं। और अब मुझे अपने स्पिनर में "ब्लैक" को डिफ़ॉल्ट स्थिति के रूप में बनाना होगा। क्या आप मुझे समझते हैं? – Adam

+0

सबसे पहले यदि आपको स्पिनर में डिफ़ॉल्ट रूप से कोई डेटा सेट करना है तो आपको एक ऐरे या सूची बनाना होगा क्योंकि spinner.setselection विधि केवल int में इनपुट प्राप्त करती है। इसलिए उस समय आपको उस विधि को उस ऐरे या सूची अनुक्रमणिका को पास करना होगा। समझ गया ? –

38

में मदद मिलेगी यहाँ समाधान है, धन्यवाद मदद के लिए sfratini है लगता है।

उपयोग:

spinner.setSelection(getIndex(spinner, myString)); 

तब:

private int getIndex(Spinner spinner, String myString){ 

     int index = 0; 

     for (int i=0;i<spinner.getCount();i++){ 
      if (spinner.getItemAtPosition(i).equals(myString)){ 
       index = i; 
      } 
     } 
     return index; 
} 
+0

आप मालिक हैं! एक्सडी – KryNaC

+0

मेरे लिए काम किया ... धन्यवाद :) – Devraj

+0

आप पाए जाने पर सीधे सूचकांक लौटकर इसे अनुकूलित कर सकते हैं। आपको एक परिवर्तनीय प्लस कुछ पुनरावृत्तियों को बचाता है। लेकिन केवल अगर यह आपके उपयोग के मामले के अनुरूप है। (आखिरी मैच लौटाता है, आखिरी नहीं, क्योंकि यह अभी है) – AlbAtNf

1

आप एडाप्टर का उपयोग करें ... तुम सिर्फ
सूची में स्ट्रिंग सरणी बदलने की आवश्यकता और फिर का उपयोग indexOf (की जरूरत नहीं है ऑब्जेक्ट ऑब्जेक्ट) चयनित रंग का उपयोग करके स्पिन की अनुक्रमणिका प्राप्त करने के लिए

String [] strings = yourString.split(" "); 
List<String> strList = new ArrayList<String>(Arrays.asList(strings)); 
//Or you can load array from xml... 
//List<String> strList2 = Arrays.asList(getResources().getStringArray(R.array.array_color)); 
spinner.setSelection(strList.indexOf("colorvalue")); 
संबंधित मुद्दे