summaryrefslogtreecommitdiff
path: root/Xamarin.Forms.Platform.Tizen/Renderers/ListViewRenderer.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Xamarin.Forms.Platform.Tizen/Renderers/ListViewRenderer.cs')
-rw-r--r--Xamarin.Forms.Platform.Tizen/Renderers/ListViewRenderer.cs68
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>