[A] Do not throw error for first param in ScrollTo (#742)
authorPaul DiPietro <pauldipietro@users.noreply.github.com>
Fri, 17 Feb 2017 10:44:14 +0000 (04:44 -0600)
committerRui Marinho <me@ruimarinho.net>
Fri, 17 Feb 2017 10:44:14 +0000 (10:44 +0000)
Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/Bugzilla41600.cs [new file with mode: 0644]
Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/Xamarin.Forms.Controls.Issues.Shared.projitems
Xamarin.Forms.Platform.Android/Renderers/ListViewRenderer.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 (file)
index 0000000..21b3df2
--- /dev/null
@@ -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<string>();
+                       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
index 8aa7217..36c7a2b 100644 (file)
     <Compile Include="$(MSBuildThisFileDirectory)Bugzilla41415.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)Bugzilla41418.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)Bugzilla41424.cs" />
+    <Compile Include="$(MSBuildThisFileDirectory)Bugzilla41600.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)Bugzilla41619.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)Bugzilla42069.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)Bugzilla42069_Page.xaml.cs">
index 1054e1e..fa83b25 100644 (file)
@@ -206,6 +206,9 @@ namespace Xamarin.Forms.Platform.Android
                        else
                        {
                                position = templatedItems.GetGlobalIndexOfItem(scrollArgs.Item);
+                               if (position == -1)
+                                       return;
+
                                cell = templatedItems[position];
                        }