2013-04-10 16 views
13

Próbowałem zmusić to do działania. Chcę dynamicznie wkraczać w lata od roku 1900 do roku bieżącego w przędzarkę. Nie sądzę, że można to zrobić przy użyciu tablicy zdefiniowanej przez XML, ale czy mogę to zrobić za pomocą adaptera tablicowego? Oto co mam do tej pory:Zapełnisz spinner z latami dynamicznie w systemie 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); 

Oto XML dla turbinki:

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

Dzięki za wszelką pomoc.

+1

Co się dzieje, gdy dodasz 'spinYear.setAdapter (adapter)' do kodu? –

+0

Nie żyjesz, prawda! Dzięki! – colmulhall

Odpowiedz

31

Jesteś bardzo blisko. Spróbuj tego:

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

po prostu zapomniał dodać

spinYear.setAdapter(adapter); 
+0

Aby rozwinąć, brakowało konwersji z liczby całkowitej na ciąg z '' 'Integer.toString (i);' '' i nie pamiętasz swojego połączenia do '' 'setAdapter()' '' – vincentjames501

+1

Świetnie, że rozwiązano problem ! Wszystko, co musiałem zrobić, to ustawić adapter! * facepalm * – colmulhall

+0

@ vincentjames501 Jak ustawić pokrętło tak, aby pokazywało bieżący rok i zmieniało się tylko w przypadku wybrania innego roku? –

6

Mam nadzieję, że to pomoże.

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); 
Powiązane problemy