private async void BtnSearch_Clicked(object sender, EventArgs e) { // if flickrTask already running, prompt user if (flickrTask?.Status != TaskStatus.RanToCompletion) { flickrClient.CancelPendingRequests(); } // Flickr's web service URL for searches var flickrURL = "https://api.flickr.com/services/rest/?method=" + $"flickr.photos.search&api_key={KEY}&" + $"tags={txtSearch.Text.Replace(" ", ",")}" + "&tag_mode=all&per_page=500&privacy_filter=1"; ListView.ItemsSource = null; flickrPhotos = new List <FlickrResult>() { }; masterNavigationItems = new List <MasterNavigationItem>() { }; flickrTask = flickrClient.GetStringAsync(flickrURL); XDocument flickrXML = XDocument.Parse(await flickrTask); flickrPhotos = (from photo in flickrXML.Descendants("photo") let id = photo.Attribute("id").Value let title = photo.Attribute("title").Value let secret = photo.Attribute("secret").Value let server = photo.Attribute("server").Value let farm = photo.Attribute("farm").Value select new FlickrResult { Title = title, URL = $"https://farm{farm}.staticflickr.com/" + $"{server}/{id}_{secret}.jpg" }).ToList(); if (flickrPhotos.Any()) { await Task.Factory.StartNew(() => { ParallelLoopResult loopResult = Parallel.ForEach <FlickrResult>(flickrPhotos, photo => { MasterNavigationItem item = new MasterNavigationItem(); item.Icon = photo.URL; item.Title = photo.Title; masterNavigationItems.Add(item); }); }); ListView.ItemsSource = masterNavigationItems; } else // no matches were found { //imagesListBox.Items.Add("No matches"); } }
public DetailPageView(MasterNavigationItem item) { InitializeComponent(); lblImageName.Text = item.Title; imgDetail.Source = item.Icon; }
private async void BtnSearch_Clicked(object sender, EventArgs e) { if (txtSearch.Text != " ") { try { // if flickrTask already running, prompt user if (flickrTask?.Status != TaskStatus.RanToCompletion) { bool answer = await DisplayAlert("Alert", "Cancel the current Flickr search?", "No", "Yes"); if (answer) { return; } else { flickrClient.CancelPendingRequests(); // cancel search } } // Flickr's web service URL for searches var flickrURL = "https://api.flickr.com/services/rest/?method=" + $"flickr.photos.search&api_key={KEY}&" + $"tags={txtSearch.Text.Replace(" ", ",")}" + "&tag_mode=all&per_page=500&privacy_filter=1"; ListView.ItemsSource = null; flickrPhotos = new List <FlickrResult>() { }; masterNavigationItems = new List <MasterNavigationItem>() { }; flickrTask = flickrClient.GetStringAsync(flickrURL); XDocument flickrXML = XDocument.Parse(await flickrTask); flickrPhotos = (from photo in flickrXML.Descendants("photo") let id = photo.Attribute("id").Value let title = photo.Attribute("title").Value let secret = photo.Attribute("secret").Value let server = photo.Attribute("server").Value let farm = photo.Attribute("farm").Value select new FlickrResult { Title = title, URL = $"https://farm{farm}.staticflickr.com/" + $"{server}/{id}_{secret}.jpg" }).ToList(); if (flickrPhotos.Any()) { await Task.Factory.StartNew(() => { ParallelLoopResult loopResult = Parallel.ForEach <FlickrResult>(flickrPhotos, photo => { MasterNavigationItem item = new MasterNavigationItem { Icon = photo.URL, Title = photo.Title, Target = typeof(DetailPageView) }; masterNavigationItems.Add(item); }); }); ListView.ItemsSource = masterNavigationItems; } else { await DisplayAlert("Alert", "No matches", "OK"); } } catch (Exception ex) { await DisplayAlert("Exception!", ex.Message, "OK"); } } }