2016-10-20 58 views
1

您好,我希望用戶能夠點擊微調器並從我提供的那一年中選擇一年。我會提供從1970年到今年的範圍,但我不知道如何實施它。如何讓用戶從微調器中選擇特定年份

如果我創建了一個微調,並給它一個數組這樣

<string-array name="spinnerItems"> 
    <item>1970</item> 
    <item>1971</item> 
</string-array> 

那我就需要手工添加超過40個項目,而我則需要每年手動更新應用。此外,微調器的onClick回調不會返回字符串值,而是數組中的字符串索引,因此,例如1972年將是索引3.

此外,我將提供另一個微調器,用戶將選擇一個更大或相等的年份在第一個微調選擇的年份。

最後我想結束一個間隔數年的api請求。

我該怎麼做?

+1

你可以使用'ArrayList'作爲值,就像[this](http://stackoverflow.com/a/19820912/6950238)的答案。 –

+0

獲取當前年份。使用循環來填充1970年至今年的ArrayList。 – androidlab

+0

謝謝我不知道我可以做到這一點。 – user11230

回答

0

我認爲你必須創造,而不是創建微調的號碼列表一年拾取

試試這個

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

希望這將有助於..

+0

我會盡力謝謝。 – user11230

+0

如果我想按降序顯示日期,該怎麼辦? – user11230

0

您可以以編程方式將項目添加到微調器。

你可以通過一個簡單的命令找到我們現在有哪一年,並且可以使程序從例如1800年到今年你的微調。

警告:僞代碼

Spinner mySpinner = (Spinner) findViewById(R.id.spinner); 
Calendar calendar = Calendar.getInstance(); 
int year = calendar.get(Calendar.YEAR); 
ArrayAdapter<String> adapter; 
List<String> list; 

list = new ArrayList<String>(); 
for(int i = 1800; i <= year; i++) 
{ 
    list.add(i); 
} 
adapter = new ArrayAdapter<String>(getApplicationContext(), android.R.layout.simple_spinner_item, list); 
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
mySpinner.setAdapter(adapter); 
+0

嗨,我不使用DatePicker因爲我只需要一年,而不是一天或一個月。謝謝。 – user11230

+0

您的回答有效,但我會標記爲回覆之前發佈的人 – user11230

+0

嗯,我提前一分鐘發佈。我剛剛問了你一個問題,而他剛剛發佈了他的答案。 – Felix

相關問題