2013-04-10 9 views
13

Mi sto tormentando il cervello cercando di farlo funzionare. Voglio entrare dinamicamente tra gli anni dal 1900 e l'anno in corso in uno spinner. Non penso che questo sia possibile fare usando un array definito XML ma posso farlo con un adattatore di array? Ecco quello che ho finora:Compilate la filatrice con anni dinamicamente in Android?

ArrayList<String> years = new ArrayList<String>(); 
int thisYear = Calendar.getInstance().get(Calendar.YEAR); 

for (int i = 1900; i <= thisYear; i++) 
{ 
    years.add(i); 
} 

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

//spinner to enter this list to 
spinYear = (Spinner)findViewById(R.id.yearspin); 

Ecco il XML per il filatore:

<Spinner 
     android:id="@+id/yearspin" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content"/> 

Grazie per qualsiasi aiuto.

+1

Cosa succede quando si aggiunge 'spinYear.setAdapter (adattatore)' per il tuo codice? –

+0

Hai ragione! Grazie! – colmulhall

risposta

31

Sei molto vicino. Prova questo:

ArrayList<String> years = new ArrayList<String>(); 
int thisYear = Calendar.getInstance().get(Calendar.YEAR); 
for (int i = 1900; i <= thisYear; i++) { 
    years.add(Integer.toString(i)); 
} 
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, years); 

Spinner spinYear = (Spinner)findViewById(R.id.yearspin); 
spinYear.setAdapter(adapter); 

Hai solo dimenticato di aggiungere

spinYear.setAdapter(adapter); 
+0

Per elaborare, mancava la conversione da un intero a una stringa con '' 'Integer.toString (i);' '' e hai dimenticato la tua chiamata a '' 'setAdapter()' '' – vincentjames501

+1

Grande che ha risolto il problema ! Tutto quello che dovevo fare era impostare l'adattatore! * facepalm * – colmulhall

+0

@ vincentjames501 come posso impostare lo spinner per mostrare l'anno corrente e cambiare solo se è selezionato un anno diverso? –

6

Spero che vi aiuterà.

static final String[] Months = new String[] { "January", "February", 
      "March", "April", "May", "June", "July", "August", "September", 
      "October", "November", "December" }; 

// Set years 
     ArrayList<String> years = new ArrayList<String>(); 
     int thisYear = Calendar.getInstance().get(Calendar.YEAR); 
     for (int i = 1900; i <= thisYear; i++) { 
      years.add(Integer.toString(i)); 
     } 
     ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, years); 

     Spinner spinYear = (Spinner)findViewById(R.id.spinnerYears); 
     spinYear.setAdapter(adapter); 
     // Set months 
     ArrayAdapter<String> adapterMonths = new ArrayAdapter<String>(this, 
       android.R.layout.simple_spinner_item, Months); 
     adapterMonths.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 

     Spinner spinMonths = (Spinner)findViewById(R.id.spinnerMonths); 
     spinMonths.setAdapter(adapterMonths); 
     // Set days 
     ArrayList<String> days = new ArrayList<String>(); 
     for (int i = 1; i <= 31; i++) { 
      days.add(Integer.toString(i)); 
     } 
     ArrayAdapter<String> adapterDays = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, days); 

     Spinner spinDays = (Spinner)findViewById(R.id.spinnerDays); 
     spinDays.setAdapter(adapterDays);