2013-12-08 11 views
6

मैंने अपने ऐप में एक स्पिनर लागू किया है। मैं स्कूलों की एक सूची दिखा रहा हूं लेकिन मुझे एक डिफ़ॉल्ट मान/प्रॉम्प्ट चाहिए ताकि उपयोगकर्ता स्कूल चुनने के बारे में जानता हो। मैं सूची सूची के रूप में संकेत प्राप्त किए बिना भी ऐसा करना चाहता हूं। कोई विचार?एंड्रॉइड स्पिनर डिफ़ॉल्ट टेक्स्ट सेट

selectSchoolSpinner = (Spinner) findViewById(R.id.select_school_spinner); 
spinnerSchoolList = new ArrayList<String>(); 

spinnerSchoolList.add("Please select School"); 
//I don't want to have a prompt like the latter  

ArrayAdapter<String> spinnerAdapter = new ArrayAdapter<String>(this, 
    android.R.layout.simple_spinner_item, spinnerSchoolList); 

spinnerAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 

selectSchoolSpinner.setAdapter(spinnerAdapter); 

उत्तर

9

कोशिश setSelection डिफ़ॉल्ट पाठ सेट करने के लिए विधि:

spinner.setSelection(adapter.getPosition(DEFAULT_CURRENCY_TYPE))

और इस लिंक देखें: How to make an Android Spinner with initial text "Select One"

यहाँ मेरी स्पिनर कोड अब तक है। यह बहुत उपयोगी है (@ लोर्नवर्गस जवाब वह है जो आपको चाहिए)।

+0

धन्यवाद मेरे लिए काम किया। –

17

आपको अपने कन्स्ट्रक्टर में अपने वांछित पाठ के लिए स्ट्रिंग के साथ कस्टम ऐरेएडाप्टर बनाना चाहिए। फिर, आपको अपने सरणी के पहले तत्व को अपने डिफ़ॉल्ट टेक्स्ट से स्विच करना चाहिए, और उपयोगकर्ता के बाद स्पिनर पर क्लिक करने के बाद इसे मूल सरणी पर वापस जाना चाहिए।

उदाहरण:

गतिविधि वर्ग:

public class SpinnerActivity extends Activity { 

    Spinner spinner; 
    String defaultTextForSpinner = "Your deafult text here"; 
    String[] arrayForSpinner = {"One", "Two", "Three"}; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     setContentView(R.layout.activity_spinner); 

     spinner = (Spinner) findViewById(R.id.your_spinner); 
     spinner.setAdapter(new CustomSpinnerAdapter(this, R.layout.spinner_row, arrayForSpinner, defaultTextForSpinner)); 
    } 
    } 

CustomSpinnerAdapter वर्ग:

public class CustomSpinnerAdapter extends ArrayAdapter<String>{ 

    Context context; 
    String[] objects; 
    String firstElement; 
    boolean isFirstTime; 

    public CustomSpinnerAdapter(Context context, int textViewResourceId, String[] objects, String defaultText) { 
     super(context, textViewResourceId, objects); 
     this.context = context; 
     this.objects = objects; 
     this.isFirstTime = true; 
     setDefaultText(defaultText); 
    } 

    @Override 
    public View getDropDownView(int position, View convertView, ViewGroup parent) { 
     if(isFirstTime) { 
      objects[0] = firstElement; 
      isFirstTime = false; 
     } 
     return getCustomView(position, convertView, parent); 
    } 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     notifyDataSetChanged(); 
     return getCustomView(position, convertView, parent); 
    } 

    public void setDefaultText(String defaultText) { 
     this.firstElement = objects[0]; 
     objects[0] = defaultText; 
    } 

    public View getCustomView(int position, View convertView, ViewGroup parent) { 

     LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     View row = inflater.inflate(R.layout.spinner_row, parent, false); 
     TextView label = (TextView) row.findViewById(R.id.spinner_text); 
     label.setText(objects[position]); 

     return row; 
    } 

    } 
+0

धन्यवाद, यह पूरी तरह से काम करता है, अच्छा काम !! –

+0

मुझे getCustomView विधि पर त्रुटि मिलती है। R.id.tremps_spinner_row और R.id.tremps_spinner_text –

+0

क्या है मेरा उत्तर दोबारा जांचें, मैंने इसे संपादित कर लिया है। spinner_row एक स्पिनर आइटम के लिए लेआउट है। spinner_text spinner_row लेआउट –

1
 @Override 
    protected void onPostExecute(PositionBean[] result) { 
     String[] spinnerArray = new String[result.length]; 

     if(result!=null) { 

      for (int i = 0; i < result.length; i++) { 

       String positionName = result[i].getPositionName(); 
       spinnerArray[i] = result[i].getPositionName(); 

      } 
      ArrayList<String> positionList = new ArrayList<String>(Arrays.asList(spinnerArray)); 
      positionList.add(0,"select"); 
      String [] positions = positionList.toArray(new String[positionList.size()]); 

      ArrayAdapter<String> adapter = new ArrayAdapter<String>(EngineActivity.this, android.R.layout.simple_spinner_item, 
        positions); 
      adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
      positionSpinner.setAdapter(adapter); 
     }else{ 
      Log.d("NULL", "This is null"); 
     } 

    } 
+0

सरणी के साथ एक छोटा सा खेल समस्या को हल करता है, मुझे उम्मीद है कि यह किसी की मदद करेगा –

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