Skip to content

Commit f2f63d7

Browse files
optimised the fix
1 parent 83ff9ad commit f2f63d7

File tree

1 file changed

+7
-4
lines changed

1 file changed

+7
-4
lines changed

src/Controls/src/Core/Handlers/Items/Android/Adapters/SelectableItemsViewAdapter.cs

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ public class SelectableItemsViewAdapter<TItemsView, TItemsSource> : StructuredIt
1212
where TItemsSource : IItemsViewSource
1313
{
1414
List<SelectableViewHolder> _currentViewHolders = new List<SelectableViewHolder>();
15+
HashSet<object> _selectedSet = new HashSet<object>();
1516

1617
protected internal SelectableItemsViewAdapter(TItemsView selectableItemsView,
1718
Func<View, Context, ItemContentView> createView = null) : base(selectableItemsView, createView)
@@ -64,7 +65,8 @@ internal void MarkPlatformSelection(SelectableItemsView selectableItemsView)
6465
return;
6566
}
6667

67-
HashSet<object> selectedSet;
68+
_selectedSet.Clear();
69+
6870
switch (selectableItemsView.SelectionMode)
6971
{
7072
case SelectionMode.None:
@@ -79,7 +81,7 @@ internal void MarkPlatformSelection(SelectableItemsView selectableItemsView)
7981
return;
8082
}
8183

82-
selectedSet = new HashSet<object> { selectedItem };
84+
_selectedSet.Add(selectedItem);
8385
break;
8486

8587
case SelectionMode.Multiple:
@@ -89,7 +91,8 @@ internal void MarkPlatformSelection(SelectableItemsView selectableItemsView)
8991
ClearPlatformSelection();
9092
return;
9193
}
92-
selectedSet = new HashSet<object>(selectedItems);
94+
95+
_selectedSet.UnionWith(selectedItems);
9396
break;
9497

9598
default:
@@ -102,7 +105,7 @@ internal void MarkPlatformSelection(SelectableItemsView selectableItemsView)
102105
if (holder.BindingAdapterPosition >= 0)
103106
{
104107
var item = ItemsSource.GetItem(holder.BindingAdapterPosition);
105-
bool shouldBeSelected = selectedSet.Contains(item);
108+
bool shouldBeSelected = _selectedSet.Contains(item);
106109

107110
if (holder.IsSelected != shouldBeSelected)
108111
{

0 commit comments

Comments
 (0)