2012-07-25 5 views
6

Desidero impostare i valori degli oggetti spinner Android in fase di esecuzione.Valori impostati spinner Android

Ecco quello che ho finora:

final ArrayAdapter<String> calsListAdapter = new ArrayAdapter<String>(this, 
       android.R.layout.simple_list_item_1, calendarNames); 
eventCalendarList.setAdapter(calsListAdapter); 
eventCalendarList.setOnItemSelectedListener(new OnItemSelectedListener() { 
    public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2, long arg3) { 
     calendarChoosen = availableCals.get(arg2); 
    } 
    public void onNothingSelected(AdapterView<?> arg0) { 
     Logger.d("Cal Choosen", "fffffffffffffff"); 
    } 
}); 

private List<AvailableCalendar> availableCals = new ArrayList<AvailableCalendar>(); 
private AvailableCalendar calendarChoosen; 

Ma i valori non sono impostati. Come può essere fatto?

+0

postale po 'di codice. La tua spiegazione non è abbastanza chiara per capire il problema. –

+0

@DavidWasser Il codice è il seguente: final ArrayAdapter calsListAdapter = new ArrayAdapter ( this, android.R.layout.simple_list_item_1, calendarNames); \t eventCalendarList.setAdapter (calsListAdapter); \t \t \t eventCalendarList \t \t \t \t \t .setOnItemSelectedListener (nuova OnItemSelectedListener() { \t \t \t \t \t \t public void onItemSelected (AdapterView arg0, \t \t \t \t \t \t \t \t View arg1, int arg2, long arg3) { \t \t \t \t \t \t \t calendarChoosen = availableCals.get (arg2); \t \t \t \t \t \t} \t \t \t \t \t \t public void onNothingSelected (AdapterView arg0) { \t \t \t \t \t \t \t Logger.d ("Cal Scelto", "FFFFFFFFFFFFFFF"); \t \t \t \t \t \t} \t \t \t \t \t}); – dominic

+0

elenco privato availableCals = new ArrayList (); private Disponibile Calendario calendarioChoosen; – dominic

risposta

10

Qui assumerò che tu crei l'adattatore Spinner basato su un List<CharSequence> o qualcosa di simile. È possibile usarlo per fare ricerche per la selezione, per esempio:

String name = model.getName(); 
int index = list.indexOf(name); 
if (index != -1) spinner.setSelection(index); 

Ovviamente, se il vostro modello non contiene dati alcun 'name', allora non c'è niente da selezionare nella Spinner, quindi si consiglia di aggiungere un po 'di logica per gestirlo. Se il modello ha un "nome", trova il suo indice nell'elenco originale utilizzato come origine dati per l'adattatore. Solo se è stata rilevata un'occorrenza, impostare la selezione dello spinner su quello stesso indice.

+0

Grazie mille ... Ha funzionato come un fascino –

2

ho impostare i valori Spinner programatically così:

public class MainActivity extends Activity { 
    private SharedPreferences prefs; 
    private String prefName = "spinner_value"; 
    int id=0; 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     final List<String> list=new ArrayList<String>(); 
     list.add("Item 1"); 
     list.add("Item 2"); 
     list.add("Item 3"); 

     final Spinner sp=(Spinner) findViewById(R.id.spinner1); 
     ArrayAdapter<String> adp= new ArrayAdapter<String>(this, 
            android.R.layout.simple_list_item_1,list); 
     adp.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
     sp.setAdapter(adp); 

     prefs = getSharedPreferences(prefName, MODE_PRIVATE); 
     id=prefs.getInt("last_val",0); 
     sp.setSelection(id); 

     sp.setOnItemSelectedListener(new OnItemSelectedListener() { 

      @Override 
      public void onItemSelected(AdapterView<?> arg0, 
       View arg1,int pos, long arg3) { 

      prefs = getSharedPreferences(prefName, MODE_PRIVATE); 
      SharedPreferences.Editor editor = prefs.edit(); 
      //---save the values in the EditText view to preferences--- 
      editor.putInt("last_val", pos); 

      editor.commit(); 

      Toast.makeText(getBaseContext(), 
       sp.getSelectedItem().toString(), Toast.LENGTH_SHORT).show(); 
     } 
     @Override 
     public void onNothingSelected(AdapterView<?> arg0) { 
      // TODO Auto-generated method stub     
     } 
    });    
}