1)スピナーを拡張して、カスタムスピナークラスを作成します。
public class CCSpinner extends Spinner {
    public CCSpinner(Context context) {
        super(context);
    }
    public CCSpinner(Context context, int mode) {
        super(context, mode);
    }
    public CCSpinner(Context context, AttributeSet attrs) {
        super(context, attrs);
    }
    public CCSpinner(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
    }
    public CCSpinner(Context context, AttributeSet attrs, int defStyleAttr, int mode) {
        super(context, attrs, defStyleAttr, mode);
    }
    @Override
    public void onDetachedFromWindow() {
        super.onDetachedFromWindow();
    }
} 
xmlビューで上記のスピナーを使用します。
2)クリックを処理するためのインターフェースを定義します。
 public interface ClickListener {
        void onItemLongClicked(View view);
        void onItemClicked(View view);
    }
3)スピナーアダプタクラスで、getViewとgetDropDownViewでこれらの処理を実行します
@Override
    public View getView(int position, View convertView, ViewGroup parent) {
        //ususal stuffs
        convertView.setTag(R.string.click_tag, position);
        convertView.setClickable(false);
        convertView.setLongClickable(false);
        return convertView;
    }
    @Override
    public View getDropDownView(int position, View convertView, ViewGroup parent) {
        //ususal stuffs
        convertView.setTag(R.string.click_tag, position);
        convertView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (clickListener != null) {
                    clickListener.onItemClicked(v);
                }
            }
        });
        convertView.setOnLongClickListener(new View.OnLongClickListener() {
            @Override
            public boolean onLongClick(View v) {
                if (clickListener != null) {
                    clickListener.onItemLongClicked(v);
                }
                return true;
            }
        });
        return convertView;
    }
4)アダプターをインスタンス化するときに、作成したClcikListenerインターフェースを渡します。
5)実装クラスで、次のことを行います。
@Override
    public void onItemLongClicked(final View view) {
        mPSpinner.onDetachedFromWindow();
        final int pos = (int) view.getTag(R.string.click);
        mPSpinner.setSelection(pos);
    }
    @Override
    public void onItemClicked(final View view) {
        mPSpinner.onDetachedFromWindow();
        int pos = (int) view.getTag(R.string.click);
        mPSpinner.setSelection(pos);
    }