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