|
private void ListView_ItemTapped(object sender, Syncfusion.ListView.XForms.ItemTappedEventArgs e)
{
if (tappedItem == null)
{
// Expands when tap on the item at first.
(e.ItemData as Contact).IsVisible = true;
tappedItem = e.ItemData as Contact;
}
else
{
if (AccordionViewModel.ContactsInfo.Contains(tappedItem) && tappedItem.IsVisible)
{
// Collapse when tap on the expanded item.
var previousitemIndex = listview.DataSource.DisplayItems.IndexOf(tappedItem);
AccordionViewModel.ContactsInfo.FirstOrDefault(x => x.ContactName == tappedItem.ContactName).IsVisible = false;
Device.BeginInvokeOnMainThread(() => { listview.RefreshListViewItem(previousitemIndex, previousitemIndex, false); });
}
if (e.ItemData as Contact != tappedItem)
{
// Expands when tap on the another item.
tappedItem = e.ItemData as Contact;
AccordionViewModel.ContactsInfo.FirstOrDefault(x => x.ContactName == tappedItem.ContactName).IsVisible = true;
}
else
tappedItem = null;
}
if (e.ItemData != null)
Device.BeginInvokeOnMainThread(() => { listview.RefreshListViewItem(listview.DataSource.DisplayItems.IndexOf(e.ItemData), listview.DataSource.DisplayItems.IndexOf(e.ItemData), false); });
} |