Example #1
0
        public override RecyclerView.ViewHolder OnCreateViewHolder(ViewGroup parent, int viewType)
        {
            //var selector = Element.ItemTemplate as DataTemplateSelector;
            //if (selector != null)
            //{
            //    selector.SelectTemplate(item, _listView);
            //}

            var gridViewCell = viewType == 0 ?
                               Element.ItemTemplate.CreateContent() as Plugin.GridViewControl.Common.FastGridCell :
                               Element.GroupHeaderTemplate.CreateContent() as Plugin.GridViewControl.Common.FastGridCell;

            // reflection method of setting isplatformenabled property
            // We are going to re-set the Platform here because in some cases (headers mostly) its possible this is unset and
            // when the binding context gets updated the measure passes will all fail. By applying this here the Update call
            // further down will result in correct layouts.
            var p = PlatformProperty.GetValue(Element);

            PlatformProperty.SetValue(gridViewCell, p);

            var initialCellSize = new Xamarin.Forms.Size(Element.MinItemWidth, Element.RowHeight);
            var view            = new GridViewCellContainer(parent.Context, gridViewCell, parent, initialCellSize);

            //Only add the click handler for items (not group headers.)
            if (viewType == 0)
            {
                view.Click += MMainView_Click;
            }

            //Height of the view will be taken as RowHeight for child items
            //and the heightrequest property of the first view in the template
            //or the render height (whatever that is) if the heightrequest property is not defined.
            var height = viewType == 0 ? Convert.ToInt32(Element.RowHeight) :
                         gridViewCell.View.HeightRequest != -1 ?
                         Convert.ToInt32(gridViewCell.View.HeightRequest) :
                         Convert.ToInt32(gridViewCell.RenderHeight);

            var width = Convert.ToInt32(Element.MinItemWidth);
            var dpW   = ConvertDpToPixels(width);
            var dpH   = ConvertDpToPixels(height);

            //If there are no minimums then the view doesn't render at all.
            view.SetMinimumWidth(dpW);
            view.SetMinimumHeight(dpH);

            var d = parent.Context.GetDrawable("statelist_item_background.xml");

            view.SetBackground(d);

            //If not set to match parent then the view doesn't stretch to fill.
            //This is not necessary anymore with the plaform fix above.
            //view.LayoutParameters = new GridLayoutManager.LayoutParams(ViewGroup.LayoutParams.MatchParent, ViewGroup.LayoutParams.WrapContent);

            //Wrap the view.
            view.SetOnLongClickListener(this);
            GridViewCell myView = new GridViewCell(view);

            //return the view.
            return(myView);
        }
        public IVisualElementRenderer Convert(Xamarin.Forms.View source, Xamarin.Forms.VisualElement valid)
        {
            IVisualElementRenderer render = (IVisualElementRenderer)source.GetValue(RendererProperty);

            if (render == null)
            {
                render = Platform.CreateRenderer(source);
                source.SetValue(RendererProperty, render);
                var p = PlatformProperty.GetValue(valid);
                PlatformProperty.SetValue(source, p);
                IsPlatformEnabledProperty.SetValue(source, true);
            }

            return(render);
        }
        public IVisualElementRenderer Convert(Xamarin.Forms.View source, Xamarin.Forms.VisualElement valid)
        {
            IVisualElementRenderer render = (IVisualElementRenderer)source.GetValue(RendererProperty);

            if (render == null)
            {
                render = RendererFactory.GetRenderer(source);
                source.SetValue(RendererProperty, render);
                if (valid != null)
                {
                    var p = PlatformProperty.GetValue(valid);
                    if (p != null)
                    {
                        //PlatformProperty.SetValue(source, p);
                        //IsPlatformEnabledProperty.SetValue(source, true);
                    }
                }
            }

            return(render);
        }
Example #4
0
        public IVisualElementRenderer Convert(Xamarin.Forms.View source, Xamarin.Forms.VisualElement valid)
        {
            //only wp allow us to get renderer directly
            IVisualElementRenderer render = source.GetRenderer();

            if (render == null)
            {
                render = RendererFactory.GetRenderer(source);
                source.SetRenderer(render);
                if (valid != null)
                {
                    var p = PlatformProperty.GetValue(valid);
                    if (p != null)
                    {
                        PlatformProperty.SetValue(source, p);
                        IsPlatformEnabledProperty.SetValue(source, true);
                    }
                }
            }

            return(render);
        }