Android:如何设置微调器的deafult值?

Android:如何设置微调器的deafult值?,android,spinner,android-spinner,Android,Spinner,Android Spinner,我正在创建一个下拉列表(微调器),其中必须显示所有日期,但我想设置不同的默认值。目前微调器的默认值和第一个值相同。请帮助我如何做到这一点…代码片段非常感谢。。。。 我的是=> 公共类MainActivity扩展活动实现AdapterView.OnItemSelectedListener{ 纺纱机; @凌驾 创建时受保护的void(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.lay

我正在创建一个下拉列表(微调器),其中必须显示所有日期,但我想设置不同的默认值。目前微调器的默认值和第一个值相同。请帮助我如何做到这一点…代码片段非常感谢。。。。 我的是=>

公共类MainActivity扩展活动实现AdapterView.OnItemSelectedListener{
纺纱机;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
微调器=(微调器)findViewById(R.id.spinner1);
ArrayAdapter=ArrayAdapter.createFromResource(此,
R.array.days、android.R.layout.simple\u spinner\u item);
旋转器。设置适配器(适配器);
spinner.setOnItemSelectedListener(此);
}
@凌驾
公共布尔onCreateOptions菜单(菜单){
//为菜单充气;这会将项目添加到操作栏(如果存在)。
getMenuInflater().充气(R.menu.main,menu);
返回true;
}
@凌驾
已选择公共视图(适配器视图arg0、视图arg1、内部arg2、,
长arg3){
TextView电视=(TextView)arg1;
Toast.makeText(这是“您已选择”+tv.getText(),Toast.LENGTH\u SHORT.show();
}
@凌驾
未选择公共无效(AdapterView arg0){
//TODO自动生成的方法存根
}
}
Activity_main.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >

<Spinner
    android:id="@+id/spinner1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_alignParentTop="true" />

</RelativeLayout>

simple_spinner_item.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >

<TextView
    android:id="@+id/textView1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="TextView" />

</LinearLayout>

String.xml

"

微调器
设置
你好,世界!
选择一天
星期日
星期一
星期二
星期三
星期四
星期五
星期六

您可以使用函数:setSelection(Integer)

编辑: 我认为唯一的解决方案是创建自己的微调器适配器,但将文本作为最后一项,并使用getCount不显示它

class MySpinnerAdapter extends ArrayAdapter<String> {
    public MySpinnerAdapter(Context context, int resource, List<String> objects) {
        super(context, resource, objects);
    }

    @Override
    public int getCount() {
        return super.getCount() - 1; // This makes not show the last item
    }

    @Override
    public SpinnerItem getItem(int position) {
        return super.getItem(position);
    }

    @Override
    public long getItemId(int position) {
        return super.getItemId(position);
    }

}

使用提示作为最后一个元素定义
R.array.days

<string-array name="days">
  <item>Sunday</item>
  <item>Monday</item>
  <item>Tuesday</item>
  <item>Wednesday</item>
  <item>Thursday</item>
  <item>Friday</item>
  <item>Saturday</item>
  <item>Choose a Day</item> <!-- Hint -->
</string-array>
最后,将提示设置为默认微调器值

spinner.setSelection(dayValues.length - 1);

我开发了一个小组件来实现这一点。只需在AutoCompleteTexview中添加一个提示文本,并使用它构建CompleteSpinner


要在微调器中设置什么值作为默认值?选择一天或类似的日期…在
R.array.days中添加“选择一天”
?你试过这种方法吗?是的!我已经尝试过,但默认值被重复…作为第一个值…意味着默认值与第一个下拉元素值相同..请显示
days.xml
它将默认值设置为我们在方法中传递的位置…但我想将默认值设置为“选择一天”…请帮助,你的编辑似乎从我的帖子中得到了很多启发:)哈哈,我和你在同一时间编辑的。我们只是使用不同的方法来考虑相同的解决方案;)谢谢,但它只是第一次工作。当我选择一个选项时,默认值就会消失…在arraylist的for循环之前,只需附加您希望显示为适配器中第一项的字符串。
class MySpinnerAdapter extends ArrayAdapter<String> {
    public MySpinnerAdapter(Context context, int resource, List<String> objects) {
        super(context, resource, objects);
    }

    @Override
    public int getCount() {
        return super.getCount() - 1; // This makes not show the last item
    }

    @Override
    public SpinnerItem getItem(int position) {
        return super.getItem(position);
    }

    @Override
    public long getItemId(int position) {
        return super.getItemId(position);
    }

}
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    spinner =(Spinner) findViewById(R.id.spinner1);
    ArrayList itemsSpinner = new ArrayList(); 
    itemsSpinner.add("Day 1"); 
    itemsSpinner.add("Day 2"); 
    itemsSpinner.add("Choose a day"); // Last item

    MySpinnerAdapter adapterSpinner = new MySpinnerAdapter(this, android.R.layout.simple_spinner_item, itemsSpinner );
    adapterSpinner.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    spinner.setAdapter(adapterSpinner);
    spinner.setSelection(items.size() - 1);
}
<string-array name="days">
  <item>Sunday</item>
  <item>Monday</item>
  <item>Tuesday</item>
  <item>Wednesday</item>
  <item>Thursday</item>
  <item>Friday</item>
  <item>Saturday</item>
  <item>Choose a Day</item> <!-- Hint -->
</string-array>
spinner = (Spinner) findViewById(R.id.spinner1);
String[] dayValues = getResources().getStringArray(R.array.days);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
   android.R.layout.simple_spinner_item, dayValues) {

    @Override
    public int getCount() {
         int c = super.getCount();
         if (spinner.getSelectedItemPosition() < c - 1) return c;
         return c > 0 ? c - 1 : c;
    }
};
spinner.setAdapter(adapter);
spinner.setSelection(dayValues.length - 1);