From 986c46d0d410bb80a83ac37da0c68c2ad2f390b3 Mon Sep 17 00:00:00 2001 From: Paul DiPietro Date: Fri, 17 Feb 2017 04:44:14 -0600 Subject: [PATCH] [A] Do not throw error for first param in ScrollTo (#742) --- .../Bugzilla41600.cs | 51 +++++++++++++++++++ ...rin.Forms.Controls.Issues.Shared.projitems | 1 + .../Renderers/ListViewRenderer.cs | 3 ++ 3 files changed, 55 insertions(+) create mode 100644 Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/Bugzilla41600.cs diff --git a/Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/Bugzilla41600.cs b/Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/Bugzilla41600.cs new file mode 100644 index 00000000000..21b3df24233 --- /dev/null +++ b/Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/Bugzilla41600.cs @@ -0,0 +1,51 @@ +using Xamarin.Forms.CustomAttributes; +using Xamarin.Forms.Internals; +using System.Collections.Generic; + +#if UITEST +using Xamarin.UITest; +using NUnit.Framework; +#endif + +namespace Xamarin.Forms.Controls.Issues +{ + [Preserve(AllMembers = true)] + [Issue(IssueTracker.Bugzilla, 41600, "[Android] Invalid item param value for ScrollTo throws an error", PlatformAffected.Android)] + public class Bugzilla41600 : TestContentPage + { + protected override void Init() + { + var items = new List(); + for (var i = 0; i <= 30; i++) + items.Add(i.ToString()); + + var listView = new ListView + { + ItemsSource = items + }; + Content = new StackLayout + { + Children = + { + listView, + new Button + { + Text = "Click for ScrollTo (should do nothing)", + Command = new Command(() => + { + listView.ScrollTo("Hello", ScrollToPosition.Start, true); + }) + }, + new Button + { + Text = "Click for ScrollTo (should go to 15)", + Command = new Command(() => + { + listView.ScrollTo(items[15], ScrollToPosition.Start, false); + }) + } + } + }; + } + } +} \ No newline at end of file diff --git a/Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/Xamarin.Forms.Controls.Issues.Shared.projitems b/Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/Xamarin.Forms.Controls.Issues.Shared.projitems index 8aa7217526b..36c7a2b927b 100644 --- a/Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/Xamarin.Forms.Controls.Issues.Shared.projitems +++ b/Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/Xamarin.Forms.Controls.Issues.Shared.projitems @@ -130,6 +130,7 @@ + diff --git a/Xamarin.Forms.Platform.Android/Renderers/ListViewRenderer.cs b/Xamarin.Forms.Platform.Android/Renderers/ListViewRenderer.cs index 1054e1e8026..fa83b25b0a3 100644 --- a/Xamarin.Forms.Platform.Android/Renderers/ListViewRenderer.cs +++ b/Xamarin.Forms.Platform.Android/Renderers/ListViewRenderer.cs @@ -206,6 +206,9 @@ void OnScrollToRequested(object sender, ScrollToRequestedEventArgs e) else { position = templatedItems.GetGlobalIndexOfItem(scrollArgs.Item); + if (position == -1) + return; + cell = templatedItems[position]; }