Skip to content

Commit c78a76c

Browse files
committed
[Android] Fixed selection logic with header/footer in CollectionView
Adjusted SelectableItemsViewAdapter to correctly handle selection when header or footer templates are present. Updated Issue21375 test case to include header and footer templates.
1 parent bdaa464 commit c78a76c

File tree

2 files changed

+12
-2
lines changed

2 files changed

+12
-2
lines changed

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -99,10 +99,10 @@ internal void MarkPlatformSelection(SelectableItemsView selectableItemsView)
9999
return;
100100
}
101101

102-
for (int i = 0; i < _currentViewHolders.Count; i++)
102+
for (int i = 0; i < _currentViewHolders.Count - (ItemsSource.HasFooter ? 1 : 0); i++)
103103
{
104104
var holder = _currentViewHolders[i];
105-
if (holder.BindingAdapterPosition >= 0)
105+
if (holder.BindingAdapterPosition >= (ItemsSource.HasHeader ? 1 : 0))
106106
{
107107
var item = ItemsSource.GetItem(holder.BindingAdapterPosition);
108108
bool shouldBeSelected = _selectedSet.Contains(item);

src/Controls/tests/TestCases.HostApp/Issues/Issue21375.xaml

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,16 @@
55
Title="Issue21375">
66
<VerticalStackLayout>
77
<CollectionView ItemsSource="{Binding Items}" SelectionMode="Single" x:Name="collectionView" AutomationId="collectionView" Background="LightBlue">
8+
<CollectionView.HeaderTemplate>
9+
<DataTemplate>
10+
<Label HeightRequest="0" Text="HeaderTemplate"/>
11+
</DataTemplate>
12+
</CollectionView.HeaderTemplate>
13+
<CollectionView.FooterTemplate>
14+
<DataTemplate>
15+
<Label HeightRequest="0" Text="FooterTemplate"/>
16+
</DataTemplate>
17+
</CollectionView.FooterTemplate>
818
<CollectionView.ItemTemplate>
919
<DataTemplate>
1020
<StackLayout Padding="10" SemanticProperties.Description="{Binding Name}" HeightRequest="50">

0 commit comments

Comments
 (0)