2013-04-10 108 views
13

我一直在試圖讓這個工作。我想從1900年到今年的動態進入一個微調。我不認爲這是可以做到使用XML定義的數組,但我可以使用數組適配器嗎?以下是我迄今爲止:在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); 

下面是微調的XML:

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

感謝您的幫助。

+1

當您添加'spinYear.setAdapter(適配器)'對你的代碼會發生什麼? – 2013-04-10 00:18:01

+0

你死定了!謝謝! – colmulhall 2013-04-10 00:35:35

回答

31

你非常接近。試試這個:

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

你剛纔忘了加

spinYear.setAdapter(adapter); 
+0

詳細說明,你錯過了用Integer.toString(i);'''從一個整數到一個字符串的轉換,而你忘記了對'''setAdapter()的調用''' – vincentjames501 2013-04-10 00:23:00

+1

很好的解決了這個問題!我所需要做的就是設置適配器! * facepalm * – colmulhall 2013-04-10 00:35:10

+0

@ vincentjames501如何設置微調器顯示當前年份並僅在選擇不同年份時更改? – 2016-06-07 12:36:01

6

我希望這會幫助你。

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