From 9cd4145217e8031c5ec40517e6b368aed72d8987 Mon Sep 17 00:00:00 2001 From: Kyle Spearrin Date: Wed, 18 May 2016 21:45:13 -0400 Subject: [PATCH] testing list page perf --- src/App/App.csproj | 1 + src/App/Pages/SettingsPage.cs | 2 +- src/App/Pages/TestListPage.cs | 68 +++++++++++++++++++++++++++++++++++ 3 files changed, 70 insertions(+), 1 deletion(-) create mode 100644 src/App/Pages/TestListPage.cs diff --git a/src/App/App.csproj b/src/App/App.csproj index fcb66e696..f941ae281 100644 --- a/src/App/App.csproj +++ b/src/App/App.csproj @@ -82,6 +82,7 @@ + diff --git a/src/App/Pages/SettingsPage.cs b/src/App/Pages/SettingsPage.cs index 24f372163..0e0438bd2 100644 --- a/src/App/Pages/SettingsPage.cs +++ b/src/App/Pages/SettingsPage.cs @@ -126,7 +126,7 @@ namespace Bit.App.Pages private void TouchIdCell_Tapped(object sender, EventArgs e) { - + Navigation.PushAsync(new TestListPage()); } private void FoldersCell_Tapped(object sender, EventArgs e) diff --git a/src/App/Pages/TestListPage.cs b/src/App/Pages/TestListPage.cs new file mode 100644 index 000000000..90373a474 --- /dev/null +++ b/src/App/Pages/TestListPage.cs @@ -0,0 +1,68 @@ +using System; +using Xamarin.Forms; +using Bit.App.Utilities; +using System.Collections.Generic; + +namespace Bit.App.Pages +{ + public class TestListPage : ContentPage + { + public TestListPage() + { + var textCell = new TextCell(); + textCell.SetBinding(TextCell.TextProperty, s => s.BarName); + + var listView = new ListView + { + IsGroupingEnabled = true, + GroupDisplayBinding = new Binding("FooName"), + ItemsSource = Items, + ItemTemplate = new DataTemplate(() => textCell), + HasUnevenRows = true, + SeparatorColor = Color.FromHex("d2d6de") + }; + + Content = listView; + } + + public ExtendedObservableCollection Items { get; private set; } = new ExtendedObservableCollection(); + + protected override void OnAppearing() + { + base.OnAppearing(); + + var foos = new List(); + foos.Add(new Foo("Foo 1", MakeBars())); + foos.Add(new Foo("Foo 2", MakeBars())); + foos.Add(new Foo("Foo 3", MakeBars())); + foos.Add(new Foo("Foo 4", MakeBars())); + Items.Reset(foos); + } + + private IEnumerable MakeBars() + { + var numbers = new List(); + for(int i = 0; i < 100; i++) + { + numbers.Add(new Bar { BarName = i.ToString() }); + } + return numbers; + } + + public class Foo : List + { + public Foo(string name, IEnumerable bars) + { + FooName = name; + AddRange(bars); + } + + public string FooName { get; set; } + } + + public class Bar + { + public string BarName { get; set; } + } + } +}