@Override
 public void setDropdownParams(
     SpinnerAdapter adapter, AdapterViewCompat.OnItemSelectedListener listener) {
   ensureSpinner();
   mSpinner.setAdapter(adapter);
   mSpinner.setOnItemSelectedListener(listener);
 }
 @Override
 public void setDropdownSelectedPosition(int position) {
   if (mSpinner == null) {
     throw new IllegalStateException("Can't set dropdown selected position without an adapter");
   }
   mSpinner.setSelection(position);
 }
 private void ensureSpinner() {
   if (mSpinner == null) {
     mSpinner = new SpinnerCompat(getContext(), null, R.attr.actionDropDownStyle);
     Toolbar.LayoutParams lp =
         new Toolbar.LayoutParams(
             ViewGroup.LayoutParams.WRAP_CONTENT,
             ViewGroup.LayoutParams.WRAP_CONTENT,
             Gravity.START | Gravity.CENTER_VERTICAL);
     mSpinner.setLayoutParams(lp);
   }
 }
  @Override
  public void setNavigationMode(int mode) {
    final int oldMode = mNavigationMode;
    if (mode != oldMode) {
      switch (oldMode) {
        case ActionBar.NAVIGATION_MODE_LIST:
          if (mSpinner != null && mSpinner.getParent() == mToolbar) {
            mToolbar.removeView(mSpinner);
          }
          break;
        case ActionBar.NAVIGATION_MODE_TABS:
          if (mTabView != null && mTabView.getParent() == mToolbar) {
            mToolbar.removeView(mTabView);
          }
          break;
      }

      mNavigationMode = mode;

      switch (mode) {
        case ActionBar.NAVIGATION_MODE_STANDARD:
          break;
        case ActionBar.NAVIGATION_MODE_LIST:
          ensureSpinner();
          mToolbar.addView(mSpinner, 0);
          break;
        case ActionBar.NAVIGATION_MODE_TABS:
          if (mTabView != null) {
            mToolbar.addView(mTabView, 0);
            Toolbar.LayoutParams lp = (Toolbar.LayoutParams) mTabView.getLayoutParams();
            lp.width = ViewGroup.LayoutParams.WRAP_CONTENT;
            lp.height = ViewGroup.LayoutParams.WRAP_CONTENT;
            lp.gravity = Gravity.START | Gravity.BOTTOM;
          }
          break;
        default:
          throw new IllegalArgumentException("Invalid navigation mode " + mode);
      }
    }
  }
 @Override
 public int getDropdownItemCount() {
   return mSpinner != null ? mSpinner.getCount() : 0;
 }
 @Override
 public int getDropdownSelectedPosition() {
   return mSpinner != null ? mSpinner.getSelectedItemPosition() : 0;
 }