2015-08-13 15 views
6

Ho bisogno di impostare il valore predefinito valore "seleziona il tuo dispositivo" nell'elenco a discesa del mio spinner, l'ho inserito come elemento di elenco in modo che funzioni come un elenco a discesa e nascondo l'elenco a discesa , a causa di ciò sto ricevendo uno spazio vuoto nel mio menu a discesa.Come impostare il valore predefinito nel menu a discesa dello spinner in Android?

Come devo fare?

Image

Questo è il codice a cui sono abituato

mToolbar = (Toolbar) findViewById(R.id.toolbar_actionbar); 
     setSupportActionBar(mToolbar); 
     getSupportActionBar().setDisplayShowHomeEnabled(true); 
     getSupportActionBar().setDisplayShowTitleEnabled(false); 

     /*Setup a Spinner*/ 
     mToolbarSpinner = (Spinner) findViewById(R.id.spinner_toolbar); 

     /*Manage the spinner*/ 
     mToolbarSpinnerNavigationItems = new ArrayList<SpinnerNavItem>(); 

     mToolbarSpinnerNavigationItems.add(new SpinnerNavItem("Select your Seebo", R.drawable.deviceonline)); 

     /*setting the mToolbarSpinnerNavigationItems to list_item_title_navigation.xml*/ 
     mArrayAdapter = new ArrayAdapter(this, R.layout.list_item_title_navigation,mToolbarSpinnerNavigationItems){ 
      @Override 
      public View getView(int position, View convertView, ViewGroup parent) { 

       // remember to inflate custom layout for spinner item 
       // then set anything you want here 
       // remember to use convertView.findViewById(), not just findViewById() 

       // this is an example 
       // inflate layout 
       convertView = View.inflate(MainActivity.this, R.layout.list_item_title_navigation, null); 
       // get view 
       TextView tvText1 = (TextView) convertView.findViewById(R.id.devicetitle); 
       ImageView imgIcon = (ImageView) convertView.findViewById(R.id.deviceicon); 
       imgIcon.setVisibility(View.GONE); 
       //imgIcon.setImageResource(mToolbarSpinnerNavigationItems.get(position).getIcon()); 
       // set content 
       tvText1.setText(mToolbarSpinnerNavigationItems.get(position).getTitle()); 
       // return 
       return convertView; 
      } 

      @Override 
      public View getDropDownView(int position, View convertView, ViewGroup parent) { 

       return convertView; 
      } 

     }; 

     //setting adapter to Spinner 
     mToolbarSpinner.setAdapter(mArrayAdapter); 
+0

possibile duplicato di [Come creare uno spinner Android con testo iniziale "Seleziona uno"] (http://stackoverflow.com/questions/867518/how-to-make-an-android-spinner-with-initial-text -seleziona) –

+0

controllare [questo aggiornamento] (https://stackoverflow.com/a/31987339/2826 147) risposta sotto –

risposta

0

è possibile utilizzare come,

final ArrayList<String> strDeviceArr = new ArrayList<>(); 
     strDeviceArr.add("Select device"); 
     strDeviceArr.add("Nexus X"); 
     strDeviceArr.add("Nexus XL"); 

     spnrDevice.setAdapter(new ArrayAdapter<>(MainActivity.this, R.layout 
     .layout_spinner_textview, R.id.textView, strDeviceArr)); 

     spnrDevice.setSelection(0); //set default selection to 0 

     spnrDevice.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 
     @Override 
     public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { 
      String valueSelected = strDeviceArr.get(position); 
     } 

     @Override 
     public void onNothingSelected(AdapterView<?> parent) { 

     } 
     }); 
+0

Ho provato questo ma non ho funzionato per me.Io utilizzo del menu a discesa –

+1

passa attraverso questo link che ti darà un'idea chiara ... http: //www.mkyong.com/android/android-spinner -drop-down-list-example/ –

+1

'prompt' funziona solo con la finestra di dialogo, non con il menu a discesa –

6

Per quanto riguarda la mia comprensione della tua domanda, che cosa si può fare è ignora la vista Spinner acquistandolo inizia l'indicizzazione da -1 invece che da 0 in modo che la prima voce dell'array sia quella desiderata.

selezionare il dispositivo

ci sono più domande già esistenti su StackOverflow cui è possibile fare riferimento e per fare il primario, una soluzione generalizzata è stato suggerito.

Vedere here.

O viceversa, è anche possibile set the customized default position of spinner, la tua strada, utilizzando questo frammento di codice:

ArrayAdapter<String> spinnerAdap = (ArrayAdapter<String>) mySpinner.getAdapter(); 

int spinnerPosition = messgAdap.getPosition(theDefaultValue); 

mySpinner.setSelection(spinnerPosition); 
2

Per selezionare una voce dal menu a discesa: Subito dopo l'impostazione adattatore

spinner.setAdapter(yourAdapter); 
spinner.setSelected(position); 
//position is integer starting from 0 to n-1 (n is number of items in the list or array). This will set nth item as the selected and visible item to the user. 
Problemi correlati