diff options
Diffstat (limited to 'Xamarin.Forms.Platform.Tizen/Renderers/ListViewRenderer.cs')
-rw-r--r-- | Xamarin.Forms.Platform.Tizen/Renderers/ListViewRenderer.cs | 68 |
1 files changed, 24 insertions, 44 deletions
diff --git a/Xamarin.Forms.Platform.Tizen/Renderers/ListViewRenderer.cs b/Xamarin.Forms.Platform.Tizen/Renderers/ListViewRenderer.cs index a602ae01..1141afb8 100644 --- a/Xamarin.Forms.Platform.Tizen/Renderers/ListViewRenderer.cs +++ b/Xamarin.Forms.Platform.Tizen/Renderers/ListViewRenderer.cs @@ -22,21 +22,6 @@ namespace Xamarin.Forms.Platform.Tizen ITemplatedItemsView<Cell> TemplatedItemsView => Element; /// <summary> - /// Event handler for ScrollToRequested. - /// </summary> - readonly EventHandler<ScrollToRequestedEventArgs> _scrollToRequested; - - /// <summary> - /// Event handler for collection changed. - /// </summary> - readonly NotifyCollectionChangedEventHandler _collectionChanged; - - /// <summary> - /// Event handler for grouped collection changed. - /// </summary> - readonly NotifyCollectionChangedEventHandler _groupedCollectionChanged; - - /// <summary> /// The _lastSelectedItem and _selectedItemChanging are used for realizing ItemTapped event. Since Xamarin /// needs information only when an item has been taped, native handlers need to be agreagated /// and NotifyRowTapped has to be realized with this. @@ -52,10 +37,6 @@ namespace Xamarin.Forms.Platform.Tizen /// </summary> public ListViewRenderer() { - _scrollToRequested = OnScrollToRequested; - _collectionChanged = OnCollectionChanged; - _groupedCollectionChanged = OnGroupedCollectionChanged; - RegisterPropertyHandler(ListView.IsGroupingEnabledProperty, UpdateIsGroupingEnabled); RegisterPropertyHandler(ListView.HasUnevenRowsProperty, UpdateHasUnevenRows); RegisterPropertyHandler(ListView.RowHeightProperty, UpdateRowHeight); @@ -75,26 +56,22 @@ namespace Xamarin.Forms.Platform.Tizen if (Control == null) { SetNativeControl(new Native.ListView(Forms.Context.MainWindow)); + Control.ItemSelected += OnListViewItemSelected; + Control.ItemUnselected += OnListViewItemUnselected; } if (e.OldElement != null) { - e.OldElement.ScrollToRequested -= _scrollToRequested; - if (Element.IsGroupingEnabled) - { - e.OldElement.TemplatedItems.GroupedCollectionChanged -= _groupedCollectionChanged; - } - e.OldElement.TemplatedItems.CollectionChanged -= _collectionChanged; - Control.ItemSelected -= ListViewItemSelectedHandler; - Control.ItemUnselected -= ListViewItemUnselectedHandler; + e.OldElement.ScrollToRequested -= OnScrollToRequested; + e.OldElement.TemplatedItems.GroupedCollectionChanged -= OnGroupedCollectionChanged; + e.OldElement.TemplatedItems.CollectionChanged -= OnCollectionChanged; } if (e.NewElement != null) { - e.NewElement.ScrollToRequested += _scrollToRequested; - Element.TemplatedItems.CollectionChanged += _collectionChanged; - Control.ItemSelected += ListViewItemSelectedHandler; - Control.ItemUnselected += ListViewItemUnselectedHandler; + Element.ScrollToRequested += OnScrollToRequested; + Element.TemplatedItems.GroupedCollectionChanged += OnGroupedCollectionChanged; + Element.TemplatedItems.CollectionChanged += OnCollectionChanged; } base.OnElementChanged(e); @@ -108,10 +85,21 @@ namespace Xamarin.Forms.Platform.Tizen /// <c>True</c> if the memory release was requested on demand.</param> protected override void Dispose(bool disposing) { - Element.ScrollToRequested -= _scrollToRequested; - Element.TemplatedItems.CollectionChanged -= _collectionChanged; - Element.TemplatedItems.GroupedCollectionChanged -= _groupedCollectionChanged; + if (disposing) + { + if (Element != null) + { + Element.ScrollToRequested -= OnScrollToRequested; + Element.TemplatedItems.CollectionChanged -= OnCollectionChanged; + Element.TemplatedItems.GroupedCollectionChanged -= OnGroupedCollectionChanged; + } + if (Control != null) + { + Control.ItemSelected -= OnListViewItemSelected; + Control.ItemUnselected -= OnListViewItemUnselected; + } + } base.Dispose(disposing); } @@ -121,7 +109,7 @@ namespace Xamarin.Forms.Platform.Tizen /// </summary> /// <param name="sender">A native list instance from which the event has originated.</param> /// <param name="e">Argument associated with handler, it holds native item for which event was raised</param> - void ListViewItemSelectedHandler(object sender, GenListItemEventArgs e) + void OnListViewItemSelected(object sender, GenListItemEventArgs e) { GenListItem item = e.Item; @@ -166,7 +154,7 @@ namespace Xamarin.Forms.Platform.Tizen /// </summary> /// <param name="sender">A native list instance from which the event has originated.</param> /// <param name="e">Argument associated with handler, it holds native item for which event was raised</param> - void ListViewItemUnselectedHandler(object sender, GenListItemEventArgs e) + void OnListViewItemUnselected(object sender, GenListItemEventArgs e) { if (_selectedItemChanging == 0) { @@ -363,14 +351,6 @@ namespace Xamarin.Forms.Platform.Tizen void UpdateIsGroupingEnabled(bool initialize) { Control.IsGroupingEnabled = Element.IsGroupingEnabled; - if (Element.IsGroupingEnabled) - { - Element.TemplatedItems.GroupedCollectionChanged += _groupedCollectionChanged; - } - else - { - Element.TemplatedItems.GroupedCollectionChanged -= _groupedCollectionChanged; - } } /// <summary> |