如何在Spinner中显示与下拉菜单不同的内容?

2 user-interface android spinner

我有一个Android Spinner小部件,我想在第一个项目中显示一个略有不同的字符串,如果它被选中,如果它显示在下拉列表中.例如,单击

[Select a dessert...  v]
Run Code Online (Sandbox Code Playgroud)

弹出:

o No dessert
  Cake
  Pie
  Ice cream
Run Code Online (Sandbox Code Playgroud)

如果选择"Cake",则Spinner表现正常:

[Cake                 v]
Run Code Online (Sandbox Code Playgroud)

但如果选择"No dessert",Select a dessert...则应将其用作Spinner提示,如同未选择任何内容时一样.

最简单的方法是什么?

Spe*_*ort 5

假设您使用的方法类似于下面的方法,则simple_spinner_dropdown_item默认为toString()适配器中对象的值.考虑到这一点,重写toString()某个自定义ListItem类的方法,以返回当项目显示为下拉项时您希望微调器显示的任何值.同时覆盖适配器中所选项目的getView .

ArrayAdapter<ListItem> adapter = new ArrayAdapter<ListItem>(this, android.R.layout.simple_spinner_item, items){
    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        LayoutInflater vi = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        final View v = vi.inflate(android.R.layout.simple_spinner_item, null);
        final TextView t = (TextView)v.findViewById(android.R.id.text1);
        t.setText("Something else");
        return v;
    }
};
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
ddlSpinner.setAdapter(adapter);
Run Code Online (Sandbox Code Playgroud)