@@ -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