Example #1
0
        internal override void layout(int delta, bool animate_1)
        {
            int childrenLeft  = mSpinnerPadding.left;
            int childrenWidth = mRight - mLeft - mSpinnerPadding.left - mSpinnerPadding.right;

            if (mDataChanged)
            {
                handleDataChanged();
            }
            // Handle the empty set by removing all views
            if (mItemCount == 0)
            {
                resetList();
                return;
            }
            if (mNextSelectedPosition >= 0)
            {
                setSelectedPositionInt(mNextSelectedPosition);
            }
            recycleAllViews();
            // Clear out old views
            removeAllViewsInLayout();
            // Make selected view and position it
            mFirstPosition = mSelectedPosition;
            android.view.View sel = makeAndAddView(mSelectedPosition);
            int width             = sel.getMeasuredWidth();
            int selectedOffset    = childrenLeft;

            switch (mGravity & android.view.Gravity.HORIZONTAL_GRAVITY_MASK)
            {
            case android.view.Gravity.CENTER_HORIZONTAL:
            {
                selectedOffset = childrenLeft + (childrenWidth / 2) - (width / 2);
                break;
            }

            case android.view.Gravity.RIGHT:
            {
                selectedOffset = childrenLeft + childrenWidth - width;
                break;
            }
            }
            sel.offsetLeftAndRight(selectedOffset);
            // Flush any cached views that did not get reused above
            mRecycler.clear();
            invalidate();
            checkSelectionChanged();
            mDataChanged = false;
            mNeedSync    = false;
            setNextSelectedPositionInt(mSelectedPosition);
        }