private async void PlanetList_ItemAppearing(object sender, ItemVisibilityEventArgs e)
        {
            if (PlanetsList.Count == PlanetResponse.count)
            {
                PlanetListView.ItemAppearing += null;
                return;
            }
            var planet = e.Item as Planet;

            if (PlanetsList != null && PlanetsList.LastOrDefault() == planet)
            {
                PlanetListView.Footer = new ActivityIndicator()
                {
                    IsVisible = true, IsRunning = true, Color = Color.Black
                };
                PlanetResponse = await PlanetsApi.GetPlanestList(PlanetResponse.next);

                PlanetListView.Footer = null;
                if (PlanetResponse.results != null && PlanetsList != null && PlanetsList.Count > 0)
                {
                    var list = PlanetResponse.results;
                    list.ForEach(product => PlanetsList.Add(product));
                }
            }
        }
Beispiel #2
0
        public static async Task <PlanetResponse> GetPlanestList(string url)
        {
            HttpClient RestClient = new HttpClient();

            try
            {
                HttpResponseMessage response = await RestClient.GetAsync(url);

                if (response.IsSuccessStatusCode)
                {
                    var JsonResponse = await response.Content.ReadAsStringAsync();

                    PlanetResponse PlanetResponse = JsonConvert.DeserializeObject <PlanetResponse>(JsonResponse);
                    return(PlanetResponse);
                }
                else
                {
                    return(null);
                }
            }
            catch (Exception ex)
            {
                return(null);
            }
        }
Beispiel #3
0
        public PlanetViewModel PopulatePlanetViewModel(PlanetResponse planetResponse)
        {
            var planetViewModel = new PlanetViewModel();

            planetViewModel.Name = planetResponse.Name;
            planetViewModel.Url  = planetResponse.Url;

            return(planetViewModel);
        }
Beispiel #4
0
        public async Task <IActionResult> GetAllPlanets()
        {
            var model    = new PlanetResponse();
            var response = await _planetClient.GetPlanetInfo();

            model.results  = response.results;
            model.next     = response.next;
            model.previous = response.previous;
            return(View(model));
        }
Beispiel #5
0
        public async Task <IActionResult> ChangePage(string url)
        {
            var UrlStrippedToPageInfo = url.Substring(url.Length - 15);
            var model    = new PlanetResponse();
            var response = await _planetClient.GetPlanetInfo(UrlStrippedToPageInfo);

            model.results  = response.results;
            model.previous = response.previous;
            model.next     = response.next;
            return(View("GetAllPlanets", model));
        }
        private async void Setup()
        {
            PlanetResponse = await PlanetsApi.GetPlanestList(PlanetsApi.BASE_URL);

            PlanetsList           = new ObservableCollection <Planet>(PlanetResponse.results);
            LoadingView.IsVisible = false;
            if (PlanetsList != null)
            {
                EmptyView.IsVisible           = false;
                PlanetListView.IsVisible      = true;
                PlanetListView.ItemTemplate   = new DataTemplate(() => new PlanetItemCell());
                PlanetListView.ItemsSource    = PlanetsList;
                PlanetListView.ItemSelected  += OnPlanetSelected;
                PlanetListView.ItemAppearing += PlanetList_ItemAppearing;
            }
            else
            {
                EmptyView.IsVisible = true;
            }
        }