2012-05-17 9 views
47

मेरे पास डेटाबेस में 1-50 रिकॉर्ड हैं। मैं कर्सर का उपयोग करके उन डेटा को ला रहा हूं और सरल कर्सर एडाप्टर का उपयोग करके उन मानों को स्पिनर पर सेट कर रहा हूं। अब मुझे जो चाहिए वह है कि मैं एक मान को डिफ़ॉल्ट रूप से 39 वां मान कहूं। लेकिन इसकी स्थिति से नहीं, मैं इसके मूल्य से निर्धारित करना चाहता हूं।स्पिनर डिफ़ॉल्ट को स्थिति के बजाय अपने मूल्य से कैसे सेट करें?

मैं कैसे अपनी स्थिति

spinner.setSelection(39) 

कि मूल्य के स्पिनर सेट हो जाएगा द्वारा स्पिनर डिफ़ॉल्ट सेट करने के लिए पता है।

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

क्या ऐसा करने का कोई संभावित तरीका है?

+1

ऐसा लगता है कि अगर आप सभी की जरूरत db से एक मूल्य लाने के लिए है के रूप में। या मैं कुछ गलत समझ रहा हूँ? – keyser

+0

@keyser नहीं .. मैंने डेटाबेस से मूल्य प्राप्त किया और इसे सरल कर्सर एडाप्टर का उपयोग करके स्पिनर पर सेट किया .. अब बात यह है कि मुझे स्पिनर के एक मान को डिफ़ॉल्ट रूप से इसके मूल्य से निर्धारित करने की आवश्यकता नहीं है .. क्या मैंने समझाया है स्पष्ट रूप से – GoCrazy

+0

नहीं, यह अभी भी लगता है कि आपको केवल डीबी से मूल्य प्राप्त करना है और इसे pinner.setSelection (somepositionvalue) के साथ सेट करना है। – Orest

उत्तर

14

अंत में देखते हैं, मैं नीचे दिए तरीक़े का उपयोग कर, जिसमें स्पिनर की स्थिति उसकी स्ट्रिंग

private int getPostiton(String locationid,Cursor cursor) 
{ 
    int i; 
    cursor.moveToFirst(); 
    for(i=0;i< cursor.getCount()-1;i++) 
    { 

     String locationVal = cursor.getString(cursor.getColumnIndex(RoadMoveDataBase.LT_LOCATION)); 
     if(locationVal.equals(locationid)) 
     { 
      position = i+1; 
      break; 
     } 
     else 
     { 
      position = 0; 
     } 
     cursor.moveToNext(); 
    } 

विधि

कॉलिंग द्वारा प्राप्त किया जा सकता है के द्वारा समस्या का समाधान
Spinner location2 = (Spinner)findViewById(R.id.spinner1); 
    int location2id = getPostiton(cursor.getString(3),cursor); 
    location2.setSelection(location2id); 

मुझे उम्मीद है कि यह किसी के लिए मदद करेगा ..

+0

शायद थोड़ा leaner और अधिक सुरुचिपूर्ण संस्करण इस प्रकार दिखाई देंगे: सार्वजनिक वर्ग SpinnerHelper { सार्वजनिक स्थैतिक int getPosition (स्ट्रिंग DisplayText, स्ट्रिंग FIELDNAME, कर्सर कर्सर) { पूर्णांक स्थिति = -1; कर्सर। MoveToFirst(); जबकि (cursor.moveToNext()) { स्ट्रिंग टेक्स्ट = कर्सर.getString (cursor.getColumnIndex (fieldName)); अगर (पाठ।बराबर (displayText)) { स्थिति = cursor.getPosition(); ब्रेक; } } वापसी की स्थिति; } } –

97

यदि आप arraylist या array द्वारा स्पिनर मान सेट कर रहे हैं तो आप मूल्य के सूचकांक का उपयोग कर स्पिनर के चयन को सेट कर सकते हैं।

String myString = "some value"; //the value you want the position for 

ArrayAdapter myAdap = (ArrayAdapter) mySpinner.getAdapter(); //cast to an ArrayAdapter 

int spinnerPosition = myAdap.getPosition(myString); 

//set the default according to value 
spinner.setSelection(spinnerPosition); 

लिंक How to set selected item of Spinner by value, not by position?

+1

आपके उत्तर के लिए धन्यवाद .. मुझे ArrayAdapter का उपयोग करके यह संभव पता है .. क्या सरल कर्सर एडाप्टर द्वारा भी यही संभव है ?? – GoCrazy

+0

@ विनो हां, निम्नलिखित उत्तर चेकआउट करें: http://stackoverflow.com/a/11667045/293280 –

+2

यह वास्तविक उत्तर है। –

8

मूल्य के साथ स्ट्रिंग की तुलना सूचकांक

private void selectSpinnerValue(Spinner spinner, String myString) 
    { 
     int index = 0; 
     for(int i = 0; i < spinner.getCount(); i++){ 
      if(spinner.getItemAtPosition(i).toString().equals(myString)){ 
       spinner.setSelection(i); 
       break; 
      } 
     } 
    } 
1

से मैं कैसे यह किया है:

String[] listAges = getResources().getStringArray(R.array.ages); 

     // Creating adapter for spinner 
     ArrayAdapter<String> dataAdapter = 
       new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, listAges); 

     // Drop down layout style - list view with radio button 
     dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 

     // attaching data adapter to spinner 
     spinner_age.getBackground().setColorFilter(ContextCompat.getColor(this, R.color.spinner_icon), PorterDuff.Mode.SRC_ATOP); 
     spinner_age.setAdapter(dataAdapter); 
     spinner_age.setSelection(0); 
     spinner_age.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 
      @Override 
      public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { 
       String item = parent.getItemAtPosition(position).toString(); 

       if(position > 0){ 
        // get spinner value 
        Toast.makeText(parent.getContext(), "Age..." + item, Toast.LENGTH_SHORT).show(); 
       }else{ 
        // show toast select gender 
        Toast.makeText(parent.getContext(), "none" + item, Toast.LENGTH_SHORT).show(); 
       } 
      } 
      @Override 
      public void onNothingSelected(AdapterView<?> parent) { 
      } 
     }); 
संबंधित मुद्दे