public override View GetView(int position, View convertView, ViewGroup parent) { Position adapterPosition = TranslatePosition(position); if (adapterPosition.mPosition == POSITION_HEADER) { HeaderFillerView v = GetHeaderFillerView(adapterPosition.mHeader, convertView, parent); View view = mDelegate.GetHeaderView(adapterPosition.mHeader, (View)v.Tag, parent); mGridView.DetachHeader((View) v.Tag); v.Tag = view; mGridView.AttachHeader(view); convertView = v; mLastHeaderViewSeen = v; v.ForceLayout(); } else if (adapterPosition.mPosition == POSITION_HEADER_FILLER) { convertView = GetFillerView(convertView, parent, mLastHeaderViewSeen); convertView.ForceLayout(); } else if (adapterPosition.mPosition == POSITION_FILLER) { convertView = GetFillerView(convertView, parent, mLastViewSeen); } else { convertView = mDelegate.GetView(adapterPosition.mPosition, convertView, parent); mLastViewSeen = convertView; } return convertView; }
private HeaderFillerView GetHeaderFillerView(int headerPosition, View convertView, ViewGroup parent) { HeaderFillerView headerFillerView = (HeaderFillerView)convertView; if (headerFillerView == null) { headerFillerView = new HeaderFillerView(this, mContext); } return headerFillerView; }