public override RecyclerView.ViewHolder OnCreateViewHolder(ViewGroup parent, int viewType) { ViewHolder viewHolder; switch (viewType) { case ViewTypeHeader: viewHolder = new HeaderViewHolder( LayoutInflater.FromContext(_context).Inflate(Resource.Layout.HeaderCell, parent, false), _boxedView); break; case ViewTypeFooter: viewHolder = new FooterViewHolder( LayoutInflater.FromContext(_context).Inflate(Resource.Layout.FooterCell, parent, false), _boxedView); break; default: viewHolder = new ContentViewHolder( LayoutInflater.FromContext(_context).Inflate(Resource.Layout.ContentCell, parent, false)); viewHolder.ItemView.SetOnClickListener(this); break; } _viewHolders.Add(viewHolder); return(viewHolder); }
private void BindHeaderView(HeaderViewHolder holder, TextCell formsCell) { var view = holder.ItemView; // Judging cell height int cellHeight = (int)_context.ToPixels(44); var individualHeight = formsCell.Height; if (individualHeight > 0d) { cellHeight = (int)_context.ToPixels(individualHeight); } else if (_boxedView.HeaderHeight > -1) { cellHeight = (int)_context.ToPixels(_boxedView.HeaderHeight); } view.SetMinimumHeight(cellHeight); view.LayoutParameters.Height = cellHeight; holder.TextView.SetPadding( (int)view.Context.ToPixels(_boxedView.HeaderPadding.Left), (int)view.Context.ToPixels(_boxedView.HeaderPadding.Top), (int)view.Context.ToPixels(_boxedView.HeaderPadding.Right), (int)view.Context.ToPixels(_boxedView.HeaderPadding.Bottom)); holder.TextView.Gravity = _boxedView.HeaderTextVerticalAlign.ToAndroidVertical() | GravityFlags.Left; holder.TextView.TextAlignment = Android.Views.TextAlignment.Gravity; holder.TextView.SetTextSize(Android.Util.ComplexUnitType.Sp, (float)_boxedView.HeaderFontSize); holder.TextView.SetBackgroundColor(_boxedView.HeaderBackgroundColor.ToAndroid()); holder.TextView.SetMaxLines(1); holder.TextView.SetMinLines(1); holder.TextView.SetTypeface(null, Android.Graphics.TypefaceStyle.Bold); holder.TextView.Ellipsize = TextUtils.TruncateAt.End; if (_boxedView.HeaderTextColor != Color.Default) { holder.TextView.SetTextColor(_boxedView.HeaderTextColor.ToAndroid()); } // Border setting if (_boxedView.ShowSectionTopBottomBorder) { holder.Border.SetBackgroundColor(_boxedView.SeparatorColor.ToAndroid()); } else { holder.Border.SetBackgroundColor(Android.Graphics.Color.Transparent); } // Update text holder.TextView.Text = formsCell.Text; }