When an item in the ItemsSource of a ListView is null, a NullReferenceException will be raised on Android when the items source is loaded to the list view. Even if a DataTemplateSelector is applied to display a different datatemplate for null items, the app would still crash.
I attached a sample program that demonstrates the issue. On iOS the app runs fine, but on Android the app crash at launch with a NullReferenceException.
Thanks,
Kori
When RadListView is in grid mode (SpanCount > 0), there is no spatial navigation with the keyboard.
Up and down arrows move the focused item, left and right arrows don't. (Also: it doesn't seem to be possible to style the focused item…)
Crude drawing:
Only the first column has keyboard navigation, up and down. It's invisible, though; internally, an item is focused and will execute ItemTap when pressing the return key, or will select the item when pressing the spacebar. That part is fine.
After clicking/tapping an item in any column after the first one and then pressing the down arrow, for example, we get this:
Pink is where we clicked/tapped, cyan is what's internally focused after pressing the down arrow.
Please note again that focus != selection.
Expected behavior:
Further suggestions:
when a new ObservableCollection is assigned to the listview's ItemsSource during load on demand, there is an inconsistency in the scrolling.
- On Android the listview is scrolled to the top immediately and showing items at the top of the listview.
-On iOS and UWP, the listview position is not changed.
Does the RadListView control support snap scrolling? I could not find any documentation on this.
The staggered layout lays out items in a staggered grid formation. the layout is available as follow:
Telerik Ui for Xamarin.iOS ListView
The BorderLocation property of ListViewItemStyle seems to either not be working correctly, or is severely limited in its capabilities. Although the Location enum is not marked with [Flags], the values 0, 1, 2, 4, 8, 15 seem to imply bit flags that should be able to get OR'd together. However, when trying to use Location.Top | Location.Bottom, the result is NO border at all.
Example:
public class BorderLocationExample : ContentPage
{
private readonly ListViewItemStyle BorderAll = new ListViewItemStyle
{
BorderColor = Color.Blue,
BorderLocation = Location.All,
BorderWidth = 8
};
private readonly ListViewItemStyle BorderTop = new ListViewItemStyle
{
BorderColor = Color.Blue,
BorderLocation = Location.Top,
BorderWidth = 8
};
private readonly ListViewItemStyle BorderTopAndBottom = new ListViewItemStyle
{
BorderColor = Color.Blue,
BorderLocation = Location.Top | Location.Bottom, // <-- DOESN'T WORK !!! These items have NO border at all.
BorderWidth = 8
};
public BorderLocationExample()
{
BackgroundColor = Color.Gray;
var items = new ObservableCollection<string>
{
"Item 1",
"Item 2",
"Item 3",
};
Content = new StackLayout
{
Orientation = StackOrientation.Vertical,
Children =
{
new RadListView
{
ItemsSource = items,
ItemStyle = BorderAll
},
new RadListView
{
ItemsSource = items,
ItemStyle = BorderTop
},
new RadListView
{
ItemsSource = items,
ItemStyle = BorderTopAndBottom
},
}
};
}
}