Код: Выделить всё
using System;
using System.Collections.Generic;
using System.Linq;
using ListExcercises.Models;
namespace ListExcercises.Services
{
public class SearchServices
{
private List _searches = new List
{
new Search
{
Id = 1,
Location = "West Hollywood, CA, United States",
CheckIn = new DateTime(2016, 9, 1),
CheckOut = new DateTime(2016, 11, 1)
},
new Search
{
Id = 2,
Location = "Santa Monica, CA, United States",
CheckIn = new DateTime(2016, 9, 1),
CheckOut = new DateTime(2016, 11, 1)
}
};
public IEnumerable GetRecentSearches(string filter = null)
{
if (String.IsNullOrWhiteSpace(filter))
return _searches;
return _searches.Where(s => s.Location.StartsWith(filter, StringComparison.CurrentCultureIgnoreCase));
}
public void DeleteSearch(int searchId)
{
_searches.Remove(_searches.Single(s => s.Id == searchId));
}
}
}
< /code>
Код для представления выглядит следующим образом: < /p>
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using ListExcercises.Models;
using ListExcercises.Services;
using Xamarin.Forms;
namespace ListExcercises
{
public partial class ExcerciseListPage : ContentPage
{
private SearchServices _searchService;
private List _searchGroups;
public ExcerciseListPage()
{
_searchService = new SearchServices();
InitializeComponent();
PopulateListView(_searchService.GetRecentSearches());
}
// Create re-usable list grouping(populate list)
private void PopulateListView(IEnumerable searches)
{
_searchGroups = new List
{
new SearchGroup("Recent Searches", searches)
};
listView.ItemsSource = _searchGroups;
}
void onItemTap(object sender, Xamarin.Forms.ItemTappedEventArgs e)
{
var search = e.Item as Search;
DisplayAlert("Tapped",
"Customer visited " + search.Location + " at " + search.CheckIn + " and left at " + search.CheckOut,
"OK");
}
void listView_ItemSelected(System.Object sender, Xamarin.Forms.SelectedItemChangedEventArgs e)
{
listView.SelectedItem = null;
}
void Delete_Clicked(System.Object sender, System.EventArgs e)
{
var search = (sender as MenuItem).CommandParameter as Search;
// Delete local
_searchGroups[0].Remove(search);
// Update backend
_searchService.DeleteSearch(search.Id);
}
void listView_Refreshing(System.Object sender, System.EventArgs e)
{
PopulateListView(_searchService.GetRecentSearches(searchBar.Text));
listView.EndRefresh();
}
void searchBar_TextChanged(Object sender, Xamarin.Forms.TextChangedEventArgs e)
{
PopulateListView(_searchService.GetRecentSearches(e.NewTextValue));
}
}
}
< /code>
и разметка XAML выглядит следующим образом: < /p>
Код: Выделить всё
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
namespace ListExcercises.Models
{
public class SearchGroup : ObservableCollection {
public string Title { get; set; }
public SearchGroup(string title, IEnumerable searches)
{
Title = title;
}
}
}
Код: Выделить всё
using System;
namespace ListExcercises.Models
{
public class Search
{
public int Id { get; set; }
public string Location { get; set; }
public DateTime CheckIn { get; set; }
public DateTime CheckOut { get; set; }
public string Period
{
get
{
return String.Format("{0} - {1}",
CheckIn.ToString("MMM d, yyyy"),
CheckOut.ToString("MMM d, yyyy"));
}
}
}
}
Подробнее здесь: https://stackoverflow.com/questions/642 ... sing-class