In my application I may have multiple select list on a single screen. I do not know how many before the user launches the application. My view is showing all of my data just fine. However on the iOS only, it is not displaying the selecteditems in my "inside " list view. When I leave the page and save results the data is correctly saving. Additional note If a listview item, isselected = true then on tapping it twice to set it back to false the selection changed does fire.
<?xml version="1.0" encoding="utf-8" ?><ContentPage xmlns="http://xamarin.com/schemas/2014/forms" xmlns:telerikDataControls="clr-namespace:Telerik.XamarinForms.DataControls;assembly=Telerik.XamarinForms.DataControls" xmlns:telerikListView="clr-namespace:Telerik.XamarinForms.DataControls.ListView;assembly=Telerik.XamarinForms.DataControls" x:Class="LeadPod_FORMS.View.ActiveSurveyView" Style="{StaticResource backgroundStyle}"> <Grid Margin="5,0,5,0"> <Grid.RowDefinitions> <RowDefinition Height="100" /> <RowDefinition Height="*" /> <!--<RowDefinition Height="*" />--> </Grid.RowDefinitions> <Grid Grid.Row="0" Style="{StaticResource headerStyle}"> <Grid.RowDefinitions> <RowDefinition Height="Auto" /> <RowDefinition Height="Auto" /> </Grid.RowDefinitions> <Grid.ColumnDefinitions> <ColumnDefinition Width="*"/> <ColumnDefinition Width="*"/> <ColumnDefinition Width="*"/> </Grid.ColumnDefinitions> <Button Grid.Row="0" Grid.Column="0" x:Name="LogOutBtn" Image="backArrow.png" Style="{StaticResource headerBackStyle}" HorizontalOptions="Start" Clicked="SaveBtnClick" /> <Image Grid.Row="0" Grid.Column="1" Source="headerlogo.png" HorizontalOptions="Center" /> <BoxView Grid.Row="1" Grid.Column="0" Grid.ColumnSpan="3" BackgroundColor="#37225a" /> <Label Grid.Row="1" Grid.Column="0" Grid.ColumnSpan="2" Text="{Binding surveyTitle}" Margin="20,0,0,0" VerticalOptions="Center" HorizontalOptions="Start" FontAttributes="Bold" Style="{StaticResource emailHeaderLabelStyle}" /> <Label Grid.Row="1" Grid.Column="1" Grid.ColumnSpan="2" Text="{Binding emailAddress}" Margin="0,0,20,0" VerticalOptions="Center" HorizontalOptions="End" Style="{StaticResource emailHeaderLabelStyle}" /> </Grid> <telerikDataControls:RadListView x:Name="surveyListView" SelectionMode="None" Style="{StaticResource listViewStyle}" ItemsSource="{Binding Qualifiers}" Grid.Row="1"> <telerikDataControls:RadListView.ItemStyle> <telerikListView:ListViewItemStyle BorderColor="Transparent" BorderWidth="5" BorderLocation="Bottom"/> </telerikDataControls:RadListView.ItemStyle> <telerikDataControls:RadListView.ItemTemplate> <DataTemplate> <telerikListView:ListViewTemplateCell> <telerikListView:ListViewTemplateCell.View> <StackLayout> <StackLayout Orientation="Horizontal" Style="{StaticResource menuBarStyle}" Margin="0" IsEnabled="{Binding isContact}" IsVisible="{Binding isContact}"> <StackLayout Spacing="0"> <Label x:Name="ScanFullName" Text="{Binding ScanFullName}" Style="{StaticResource contactNameLabelStyle}" /> <Label x:Name="ScanTitleLbl" Text="{Binding ScanTitle}" Style="{StaticResource contactCompanyLabelStyle}" /> <Label x:Name="ScanCompanyName" Text="{Binding ScanCompanyName}" Style="{StaticResource contactCompanyLabelStyle}" /> <Label x:Name="MissingInfoParts" Text="{Binding MissingInfoParts}" HorizontalTextAlignment="Start" Style="{StaticResource errorLabelStyle}" IsEnabled="{Binding isMissingContactInfo}" IsVisible="{Binding isMissingContactInfo}" /> </StackLayout> <Button Text="Edit" Clicked="EditDetailsBtnClick" HorizontalOptions="EndAndExpand" Style="{StaticResource buttonBarStyle}" /> </StackLayout> <StackLayout Orientation="Horizontal" Style="{StaticResource menuBarStyle}" IsEnabled="{Binding isFooter}" IsVisible="{Binding isFooter}"> <StackLayout.Margin> <OnPlatform x:TypeArguments="Thickness" iOS="0, 125, 0, 125" Android="0, 0,0, 0" WinPhone="0, 0, 0, 0" /> </StackLayout.Margin> <Label Text=" " Style="{StaticResource contactNameLabelStyle}" /> </StackLayout> <!--Single Select--> <StackLayout IsEnabled="{Binding QualifierisSingle}" IsVisible="{Binding QualifierisSingle}" Style="{StaticResource licenseListItemStyle}"> <Label Text="{Binding QualifierTitle}" Style="{StaticResource surveyTitleLabelStyle}" /> <telerikDataControls:RadListView SelectedItems="{Binding SelectedQualifierChoices}" BindingContextChanged="testUnfocused" ItemsSource="{Binding QualifierChoices}" SelectionChanged="singleChanged" SelectionMode="Single"> <telerikDataControls:RadListView.ItemStyle> <telerikListView:ListViewItemStyle BackgroundColor="Transparent" BorderLocation="None"/> </telerikDataControls:RadListView.ItemStyle> <telerikDataControls:RadListView.ItemTemplate> <DataTemplate> <telerikListView:ListViewTemplateCell> <telerikListView:ListViewTemplateCell.View> <StackLayout> <Label Text="{Binding QualifierChoiceTitle}" Style="{StaticResource surveyChoiceLabelStyle}" /> </StackLayout> </telerikListView:ListViewTemplateCell.View> </telerikListView:ListViewTemplateCell> </DataTemplate> </telerikDataControls:RadListView.ItemTemplate> </telerikDataControls:RadListView> </StackLayout> <!--Multi Select--> <StackLayout IsEnabled="{Binding QualifierisMulti}" IsVisible="{Binding QualifierisMulti}" Style="{StaticResource licenseListItemStyle}"> <Label Text="{Binding QualifierTitle}" Style="{StaticResource surveyTitleLabelStyle}" /> <telerikDataControls:RadListView SelectedItems="{Binding SelectedQualifierChoices}" BindingContextChanged="testUnfocused" ItemsSource="{Binding QualifierChoices}" SelectionChanged="singleChanged" SelectionMode="Multiple"> <telerikDataControls:RadListView.ItemStyle> <telerikListView:ListViewItemStyle BackgroundColor="Transparent" BorderLocation="None"/> </telerikDataControls:RadListView.ItemStyle> <telerikDataControls:RadListView.SelectedItemStyle> <telerikListView:ListViewItemStyle BackgroundColor="#bdafcf" BorderWidth="2" BorderLocation="All"/> </telerikDataControls:RadListView.SelectedItemStyle> <telerikDataControls:RadListView.ItemTemplate> <DataTemplate> <telerikListView:ListViewTemplateCell> <telerikListView:ListViewTemplateCell.View> <StackLayout> <Label Text="{Binding QualifierChoiceTitle}" Style="{StaticResource surveyChoiceLabelStyle}" /> </StackLayout> </telerikListView:ListViewTemplateCell.View> </telerikListView:ListViewTemplateCell> </DataTemplate> </telerikDataControls:RadListView.ItemTemplate> </telerikDataControls:RadListView> </StackLayout> <!--Numeric--> <StackLayout IsEnabled="{Binding QualifierisNumber}" IsVisible="{Binding QualifierisNumber}" Style="{StaticResource licenseListItemStyle}"> <StackLayout Orientation="Horizontal"> <Label Text="{Binding QualifierTitle}" Style="{StaticResource surveyTitleLabelStyle}" /> <Label BindingContext="{x:Reference slider}" Style="{StaticResource surveyNumericLabelStyle}" Text="{Binding Value, StringFormat='{0:F0}'}" /> </StackLayout> <Slider x:Name="slider" VerticalOptions="CenterAndExpand" HeightRequest="45" Maximum="{Binding QualifierMaxValue}" Minimum="{Binding QualifierMinValue}" Value="{Binding QualifierIntValue}" ValueChanged="sliderValChanged" /> </StackLayout> <!--Text Area--> <StackLayout IsEnabled="{Binding QualifierisNote}" IsVisible="{Binding QualifierisNote}" Style="{StaticResource licenseListItemStyle}"> <Label Text="{Binding QualifierTitle}" Style="{StaticResource surveyTitleLabelStyle}" /> <ContentView Style="{StaticResource BorderStyle}" > <ContentView Style="{StaticResource InternalViewStyle}"> <Editor HeightRequest="100" IsEnabled="{Binding QualifierisNote}" IsVisible="{Binding QualifierisNote}" Text="{Binding QualifierStringValue}" Style="{StaticResource surveyEditorStyle}" /> </ContentView> </ContentView> </StackLayout> </StackLayout> </telerikListView:ListViewTemplateCell.View> </telerikListView:ListViewTemplateCell> </DataTemplate> </telerikDataControls:RadListView.ItemTemplate><telerikDataControls:RadListView.LayoutDefinition> <telerikListView:ListViewLinearLayout VerticalItemSpacing="1" /> </telerikDataControls:RadListView.LayoutDefinition> </telerikDataControls:RadListView> </Grid> </ContentPage>Some code behind workings:
void singleChanged(object sender, System.Collections.Specialized.NotifyCollectionChangedEventArgs args) { if (((Telerik.XamarinForms.DataControls.RadListView)sender).ItemsSource != null) { if (args.OldItems != null) { //item is beind set to false LeadPod_FORMS.ViewModel.ActiveQualifierChoiceViewModel changedItem = (LeadPod_FORMS.ViewModel.ActiveQualifierChoiceViewModel)args.OldItems[0]; foreach (LeadPod_FORMS.ViewModel.ActiveQualifierChoiceViewModel i in ((Telerik.XamarinForms.DataControls.RadListView)sender).ItemsSource) { if (changedItem.QUalifierChoiceID == i.QUalifierChoiceID) { ((Telerik.XamarinForms.DataControls.RadListView)sender).SelectedItems.Remove(changedItem); } } } else { LeadPod_FORMS.ViewModel.ActiveQualifierChoiceViewModel changedItem = (LeadPod_FORMS.ViewModel.ActiveQualifierChoiceViewModel)((Telerik.XamarinForms.DataControls.RadListView)sender).SelectedItem; if (changedItem != null) { foreach (LeadPod_FORMS.ViewModel.ActiveQualifierChoiceViewModel i in ((Telerik.XamarinForms.DataControls.RadListView)sender).ItemsSource) { if (changedItem.QUalifierChoiceID == i.QUalifierChoiceID) { ((Telerik.XamarinForms.DataControls.RadListView)sender).SelectedItems.Add(changedItem); } } } //item is being set to true } }}void testUnfocused(object sender, EventArgs args) { if (((Telerik.XamarinForms.DataControls.RadListView)sender).ItemsSource != null) { foreach (LeadPod_FORMS.ViewModel.ActiveQualifierChoiceViewModel i in ((Telerik.XamarinForms.DataControls.RadListView)sender).ItemsSource) { if(i.QualifierChoiceIsSelected) { ((Telerik.XamarinForms.DataControls.RadListView)sender).SelectedItems.Add(i); } } } }
Again the Android version works perfectly, but the iOS version is not displaying the SelectedItems when the screen loads. Any help would greatly be appreciated. I am guessing the main problem is having a listview inside a listview, but I don't understand why that is preventing the UI from showing what is selected. I have checked on load, and the Listview does infact have the proper items inside the selecteditems collection, it is just not showing them.
Thanks in advance for any help