コード例 #1
0
            public override Java.Lang.Object InstantiateItem(AViews.ViewGroup container, int position)
            {
                Xamarin.Forms.View formsView = null;
                var bindingContext           = Element.ItemsSource.Cast <object> ().ElementAt(position);

                var selector = Element.ItemTemplate as DataTemplateSelector;

                if (selector != null)
                {
                    formsView = (Xamarin.Forms.View)selector.SelectTemplate(bindingContext, Element).CreateContent();
                }
                else
                {
                    formsView = (Xamarin.Forms.View)Element.ItemTemplate.CreateContent();
                }

                formsView.BindingContext = bindingContext;

                // Width in dip and not in pixels. (all Xamarin.Forms controls use dip for their WidthRequest and HeightRequest)
                // Resources.DisplayMetrics.WidthPixels / Resources.DisplayMetrics.Density
                var nativeConverted = FormsToNativeDroid.ConvertFormsToNative(formsView, new Rectangle(0, 0, Element.Width, Element.Height));

                nativeConverted.Tag = position;

                var pager = (ViewPager)container;

                pager.AddView(nativeConverted);

                return(nativeConverted);
            }
コード例 #2
0
            public override Java.Lang.Object InstantiateItem(AViews.ViewGroup container, int position)
            {
                View formsView = null;

                object bindingContext = null;

                if (Source != null && Source?.Count > 0)
                {
                    bindingContext = Source.Cast <object> ().ElementAt(position);
                }

                var dt = bindingContext as DataTemplate;

                // Support for List<DataTemplate> as ItemsSource
                if (dt != null)
                {
                    formsView = (View)dt.CreateContent();
                }
                else
                {
                    var selector = Element.ItemTemplate as DataTemplateSelector;
                    if (selector != null)
                    {
                        formsView = (View)selector.SelectTemplate(bindingContext, Element).CreateContent();
                    }
                    else
                    {
                        formsView = (View)Element.ItemTemplate.CreateContent();
                    }

                    formsView.BindingContext = bindingContext;
                }

                // HeightRequest fix
                formsView.Parent = this.Element;

                var nativeConverted = FormsToNativeDroid.ConvertFormsToNative(formsView, new Rectangle(0, 0, Element.Width, Element.Height));

                nativeConverted.Tag = position;

                var pager = (ViewPager)container;

                //nativeConverted.RestoreHierarchyState(mViewStates);

                pager.AddView(nativeConverted);

                return(nativeConverted);
            }