2012-07-25 23 views
6

Ich möchte die Android-Spinner Artikel Werte zur Laufzeit festlegen. HierAndroid Spinner-Set-Werte

ist das, was ich bisher:

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; 

aber die Werte sind nicht festgelegt. Wie kann es gemacht werden?

+0

Beitrag einige Code. Ihre Erklärung ist nicht klar genug, um das Problem zu verstehen. –

+0

@DavidWasser Der Code lautet wie folgt: final ArrayAdapter calsListAdapter = neuer ArrayAdapter ( dies, android.R.layout.simple_list_item_1, calendarNames); \t eventCalendarList.setAdapter (calsListAdapter); \t \t \t eventCalendarList \t \t \t \t \t .setOnItemSelectedListener (neu OnItemSelectedListener() { \t \t \t \t \t \t public void onItemSelected (AdapterView arg0, \t \t \t \t \t \t \t \t Ansicht arg1, int arg2, lang arg3) { \t \t \t \t \t \t \t kalenderauswahl = verfügbarKala.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 Choosen", "fffffffffffffff"); \t \t \t \t \t \t} \t \t \t \t \t}); – dominic

+0

private Liste availableCals = new ArrayList (); privat VerfügbarKalenderkalenderAuswählen; – dominic

Antwort

10

Ich gehe hier davon aus, dass Sie den Spinner-Adapter basierend auf einem List<CharSequence> oder etwas Ähnlichem erstellen. Sie können, dass Lookups für die Auswahl zu tun verwenden, zB:

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

Natürlich, wenn Ihr Modell nicht jedes möglichen ‚name‘ Daten enthält, dann gibt es nichts in der Spinner zu wählen, so können Sie eine gewisse Logik hinzufügen möchten damit umgehen. Wenn das Modell einen 'Namen' hat, suchen Sie seinen Index in der ursprünglichen Liste, die als Datenquelle für den Adapter verwendet wurde. Nur wenn ein Vorkommen gefunden wurde, legen Sie die Auswahl des Drehfelds auf denselben Index fest.

+0

Vielen Dank ... Es funktionierte wie ein Zauber –

2

Ich habe die Spinner Werte programmatisch wie folgt aus:

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     
     } 
    });    
} 
Verwandte Themen