Xamarin Forms ListView provides support to custom sort the items using Comparer.
<sync:SfListView x:Name="listView"
ItemSize="70"
FocusBorderThickness="0"
SelectionBackgroundColor="#ECECEC" IsScrollBarVisible="False"
ItemsSource="{Binding ContactsInfo}">
<sync:SfListView.DataSource>
<dataSource:DataSource>
<dataSource:DataSource.SortDescriptors>
<dataSource:SortDescriptor>
<dataSource:SortDescriptor.Comparer>
<local:CustomSortComparer/>
</dataSource:SortDescriptor.Comparer>
</dataSource:SortDescriptor>
</dataSource:DataSource.SortDescriptors>
</dataSource:DataSource>
</sync:SfListView.DataSource>
<sync:SfListView.ItemTemplate>
<DataTemplate>
<ViewCell>
<ViewCell.View>
<code>
. . .
. . .
<code>
</ViewCell.View>
</ViewCell>
</DataTemplate>
</sync:SfListView.ItemTemplate>
</sync:SfListView>
CustomSortComparer:
public class CustomSortComparer : IComparer<object>
{
public int Compare(object x, object y)
{
if (x.GetType() == typeof(ListViewContactsInfo))
{
var xitem = (x as ListViewContactsInfo).ContactName;
var yitem = (y as ListViewContactsInfo).ContactName;
if (xitem.Length > yitem.Length)
{
return 1;
}
else if (xitem.Length < yitem.Length)
{
return -1;
}
else
{
if (string.Compare(xitem, yitem) == -1)
return -1;
else if (string.Compare(xitem, yitem) == 1)
return 1;
}
}
return 0;
}
}