{
prevNotifyCollectionChanged.CollectionChanged -= CollectionChanged;
}
- itemsLayouter?.Clear();
if (selectedItem != null) selectedItem = null;
selectedItems?.Clear();
}
{
InternalItemSource?.Dispose();
InternalItemSource = null;
- //layouter.Clear()
+ itemsLayouter?.Clear();
+ ClearCache();
return;
}
if (itemsSource is INotifyCollectionChanged newNotifyCollectionChanged)
itemTemplate = value;
if (value == null)
{
- //layouter.clear()
return;
}
}
set
{
+ itemsLayouter?.Clear();
+ ClearCache();
+
itemsLayouter = value;
- base.InternalItemsLayouter = ItemsLayouter;
+ base.InternalItemsLayouter = itemsLayouter;
if (value == null)
{
needInitalizeLayouter = false;
return ItemsLayouter?.CalculateCandidateScrollPosition(position) ?? position;
}
+ /// <inheritdoc/>
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ protected override void ClearCache()
+ {
+ foreach (RecyclerViewItem item in recycleGroupHeaderCache)
+ {
+ Utility.Dispose(item);
+ }
+ recycleGroupHeaderCache.Clear();
+ foreach (RecyclerViewItem item in recycleGroupFooterCache)
+ {
+ Utility.Dispose(item);
+ }
+ recycleGroupFooterCache.Clear();
+ base.ClearCache();
+ }
+
+
/// <summary>
/// OnScroll event callback. Requesting layout to the layouter with given scrollPosition.
/// </summary>
InternalItemSource.Dispose();
InternalItemSource = null;
}
- if (recycleGroupHeaderCache != null)
- {
- foreach(RecyclerViewItem item in recycleGroupHeaderCache)
- {
- UnrealizeItem(item, false);
- }
- recycleGroupHeaderCache.Clear();
- }
- if (recycleGroupFooterCache != null)
- {
- foreach(RecyclerViewItem item in recycleGroupFooterCache)
- {
- UnrealizeItem(item, false);
- }
- recycleGroupFooterCache.Clear();
- }
}
base.Dispose(type);
if (needInitalizeLayouter)
{
+ itemsLayouter.Clear();
+ ClearCache();
+
ItemsLayouter.Initialize(this);
needInitalizeLayouter = false;
}
}
/// <summary>
+ /// Clear all remaining caches.
+ /// </summary>
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ protected virtual void ClearCache()
+ {
+ foreach (RecyclerViewItem item in RecycleCache)
+ {
+ Utility.Dispose(item);
+ }
+ RecycleCache.Clear();
+ }
+
+ /// <summary>
/// On scroll event callback.
/// </summary>
/// <since_tizen> 9 </since_tizen>
// call the clear!
if (RecycleCache != null)
{
- foreach (RecyclerViewItem item in RecycleCache)
- {
- UnrealizeItem(item, false);
- }
- RecycleCache.Clear();
+ ClearCache();
}
InternalItemsLayouter?.Clear();
InternalItemsLayouter = null;