private int measureContentWidth(ArrayAdapter listAdapter)
        {
            ViewGroup mMeasureParent = null;
            int       maxWidth       = 0;
            View      itemView       = null;
            int       itemType       = 0;

            ArrayAdapter adapter           = listAdapter;
            int          widthMeasureSpec  = View.MeasureSpec.MakeMeasureSpec(0, MeasureSpecMode.Unspecified);
            int          heightMeasureSpec = View.MeasureSpec.MakeMeasureSpec(0, MeasureSpecMode.Unspecified);
            int          count             = adapter.Count;

            for (int i = 0; i < count; i++)
            {
                int positionType = adapter.GetItemViewType(i);
                if (positionType != itemType)
                {
                    itemType = positionType;
                    itemView = null;
                }

                if (mMeasureParent == null)
                {
                    mMeasureParent = new FrameLayout(this);
                }

                itemView = adapter.GetView(i, itemView, mMeasureParent);
                itemView.Measure(widthMeasureSpec, heightMeasureSpec);

                int itemWidth = itemView.MeasuredWidth;

                if (itemWidth > maxWidth)
                {
                    maxWidth = itemWidth;
                }
            }

            return(maxWidth + 40);
        }