Я работаю над Xamarin проект форм.
Ниже мой шаблон .xaml файл:
<StackLayout>
<SearchBar>.....</SearchBar>
<ListView>.....</ListView>
</StackLayout>
Я заполняю список просмотра как:
public ObservableCollection<Grouping<string, Ticket>> TicketList
{
get { return _ticketList; }
set { _ticketList = value; OnPropertyChanged(); }
}
listview.ItemSource = TicketList;
Вот код поиска:
public void FilterList(string searchText)
{
TicketListNew = // getting list from local database
// searching each field of list with the text entered
GroupCollections(TicketListNew.Where(Tl => Tl.CustomerName.ToLower().Contains(searchText.ToLower())
}
private void GroupCollections(List<Ticket> ticketListNew){
var sorted = from ticket in ticketListNew
orderby ticket.DelPUDate
group ticket by GetTicketDate(ticket.DelPUDate) into ticketListGroup
select new Grouping<string, Ticket>(ticketListGroup.Key, ticketListGroup);
if (TicketList == null) TicketList = new ObservableCollection<Grouping<string, Ticket>>(sorted);
else
{
TicketList.Clear();
var temp = sorted.ToList();
for (var i = 0; i < temp.Count; i++)
{
TicketList.Add(temp[i]);
}
}
}
Во время поиска он переходит к другой части, и здесь уходит слишком много времени на заполнение списка в TicketList.Мне кажется, что это неправильный дизайн, чтобы сначала очистить список и назначать каждый элемент списка по одному за раз.
какое-нибудь лучшее решение для поиска?