2013-04-10 14 views
13

Ich habe mein Gehirn versucht, dies zur Arbeit zu bringen. Ich möchte in Jahren von 1900 bis zum aktuellen Jahr dynamisch in einen Spinner einsteigen. Ich denke nicht, dass dies mit einem XML-definierten Array möglich ist, aber kann ich es mit einem Array-Adapter tun? Hier ist, was ich bisher:Spinner mit Jahren dynamisch 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); 

Hier ist der XML-Code für den Spinner:

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

Vielen Dank für jede Hilfe.

+1

Was passiert, wenn Sie 'spinYear.setAdapter (Adapter)', um Ihren Code hinzufügen? –

+0

Sie sind tot richtig! Vielen Dank! – colmulhall

Antwort

31

Sie sind sehr nah dran. Versuchen Sie folgendes:

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); 

Sie haben vergessen, nur

spinYear.setAdapter(adapter); 
+0

Um zu erarbeiten, fehlte Ihnen die Umwandlung von einer Ganzzahl in eine Zeichenfolge mit '' 'Integer.toString (i);' '' und Sie vergessen Ihren Aufruf an '' 'setAdapter()' ' – vincentjames501

+1

Großartig, dass das Problem gelöst hat ! Alles, was ich tun musste, war den Adapter zu setzen! * facepalm * – colmulhall

+0

@ vincentjames501 Wie kann ich den Spinner so einstellen, dass er das aktuelle Jahr anzeigt und nur ändert, wenn ein anderes Jahr ausgewählt wird? –

6

hinzufügen hoffe ich, es wird Ihnen helfen.

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);