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); }
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); }