显示数据数组的第一年,而不是我的微调器中的提示文本。我尝试在XML中添加提示,但我也试过代码。此外,在添加spinnerSelector属性时,它为我提供了“资源未找到错误”。
<Spinner
android:id="@+id/spinnerYear"
android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:layout_marginLeft="10dip"
android:layout_marginRight="10dip"
android:drawSelectorOnTop="true"
android:padding="5dip"
android:prompt="@string/spinner_header"
android:background="@drawable/selector_yearspinnerback"
android:layout_below="@+id/linearLayout_gender_btns"
android:layout_centerHorizontal="true"></Spinner>
-- android:spinnerSelector="@drawable/category_arrow"
ArrayList<String> yearList = new ArrayList<String>();
int now = new Date().getYear() + 1900;
for (int i = now; i > now - 110; i--) {
yearList.add(i + "");
}
Spinner spinner = (Spinner) findViewById(R.id.spinnerYear);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, yearList);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapter);
答案 0 :(得分:41)
也许您看到微调器下拉项目为列表而没有任何提示文本。微调器有两种模式显示项目,下拉和对话框。
将此属性作为XML atrtribute添加到您的微调器:
android:spinnerMode="dialog"
现在,您将在弹出对话框中选择列表而不是下拉列表中的项目。
答案 1 :(得分:1)
您必须在
之后设置adapter.setDropDownViewResource (android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapter);
所以固定代码是:
ArrayList<String> yearList = new ArrayList<String>();
int now = new Date().getYear() + 1900;
for (int i = now; i > now - 110; i--) {
yearList.add(i + "");
}
Spinner spinner = (Spinner) findViewById(R.id.spinnerYear);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, yearList);
spinner.setAdapter(adapter);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
(我希望它适合你,因为它对我有用:D!)
答案 2 :(得分:0)
对我来说,android:提示XML attibute以及Spinner.setPrompt工作,列表选择器显示正确的标题。
尝试在代码中查找错误,或者在某些时候调用Spinner.getPrompt并将其打印到日志中,以找到我们从哪里获得无效的标题。