If you want, there is a decorater spinnerAdapter witch add automatically a default value :
    protected class SpinnerAdapterWithNoValue implements SpinnerAdapter {
            private SpinnerAdapter _current;
            private final static String defaultValue = "Choisir";
            public SpinnerAdapterWithNoValue(SpinnerAdapter base) {
                _current = base;
            }
            @Override
            public int getCount() {
                // TODO Auto-generated method stub
                return _current.getCount()+1;
            }
            @Override
            public Object getItem(int arg0) {
                // TODO Auto-generated method stub
                if(arg0 == 0 || arg0 == -1)
                {
                    return null;
                }
                return _current.getItem(arg0-1);
            }
            @Override
            public long getItemId(int arg0) {
                // TODO Auto-generated method stub
                if(arg0 == 0 || arg0 == -1)
                {
                    return -1;
                }
                return _current.getItemId(arg0-1);
            }
            @Override
            public int getItemViewType(int arg0) {
                // TODO Auto-generated method stub
                if(arg0 == 0 || arg0 == -1)
                {
                    return -1;
                }
                return _current.getItemViewType(arg0-1);
            }
            @Override
            public View getView(int arg0, View convertView, ViewGroup parent) {
                // TODO Auto-generated method stub
                if(arg0 == 0 || arg0 == -1)
                {
                    final TextView v = (TextView) ((LayoutInflater)getContext()
                            .getSystemService(Context.LAYOUT_INFLATER_SERVICE))
                            .inflate(R.layout.spinner_text,parent,false);
                    v.setText(defaultValue);
                    return v;
                }
                return _current.getView(arg0-1, convertView, parent);
            }
            @Override
            public int getViewTypeCount() {
                // TODO Auto-generated method stub
                return _current.getViewTypeCount();
            }
            @Override
            public boolean hasStableIds() {
                // TODO Auto-generated method stub
                return _current.hasStableIds();
            }
            @Override
            public boolean isEmpty() {
                // TODO Auto-generated method stub
                return _current.isEmpty();
            }
            @Override
            public void registerDataSetObserver(DataSetObserver arg0) {
                // TODO Auto-generated method stub
                _current.registerDataSetObserver(arg0);
            }
            @Override
            public void unregisterDataSetObserver(DataSetObserver arg0) {
                // TODO Auto-generated method stub
                _current.unregisterDataSetObserver(arg0);
            }
            @Override
            public View getDropDownView(int arg0, View convertView, ViewGroup parent) {
                // TODO Auto-generated method stub
                if(arg0 == 0 || arg0 == -1)
                {
                    CheckedTextView v = (CheckedTextView)((LayoutInflater)getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE)).inflate(android.R.layout.simple_spinner_dropdown_item,parent,false);
                    v.setText(defaultValue);
                    return v;
                }
                return _current.getDropDownView(arg0-1, convertView, parent);
            }
        }
Then you can create your own spinner using this decorater :
     public class SpinnerWithNoValue extends Spinner {
        public SpinnerWithNoValue(Context context) {
            super(context);
        }
        public SpinnerWithNoValue(Context context, AttributeSet attrs) {
            super(context, attrs);
        }
        public SpinnerWithNoValue(Context context, AttributeSet attrs, int defStyle) {
            super(context, attrs, defStyle);
        }
        @Override
        public void setAdapter(SpinnerAdapter orig ) {
            final SpinnerAdapter adapter = new SpinnerAdapterWithNoValue(orig);
            super.setAdapter(adapter);
            try {
                final Method m = AdapterView.class.getDeclaredMethod("setNextSelectedPositionInt",int.class);
                m.setAccessible(true);
                m.invoke(this,-1);
                final Method n = AdapterView.class.getDeclaredMethod("setSelectedPositionInt",int.class);
                n.setAccessible(true);
                n.invoke(this,-1);
            } catch( Exception e ) {
                throw new RuntimeException(e);
            }
        }
        /*
         * getSelectedItem
         * renvoi null si la valeur par defaut est séléctionnée
         * @see android.widget.AdapterView#getSelectedItem()
         */
        @Override
        public Object getSelectedItem()
        {
            return super.getSelectedItem();
        }
        }
You just have to change the spinner declaration in your xml layout :
    com.myproject.SpinnerWithNoValue
If you want, you can change the code to set the default text in the tag of your spinner.
If the selected value is the default value, getItem will return null and getItemId will return -1