// データを取得するメソッド public async Task <ExchangeData> AsyncGetWebAPIData(string Country) { // Listの作成 exhangeList = new ExchangeData(); // HttpClientの作成 HttpClient httpClient = new HttpClient(); // 非同期でAPIからデータを取得 Task <string> stringAsync = httpClient.GetStringAsync(API_URL + "?base=" + Country); string result = await stringAsync; // JSON形式のデータをデシリアライズ exhangeList = JsonSerializer.Deserialize <ExchangeData>(result); if (Country == "EUR") { exhangeList.rates.Add("EUR", 1); } // List でデータを返す return(exhangeList); }
// 非同期でデータ取得のメソッドを実行するメソッド async void fetchArticles(GetExchangeAPI api) { try { // 取得したデータをListに設定 ExchangeData exchangeList = await api.AsyncGetWebAPIData(Country); var items = new List <Data>(); foreach (KeyValuePair <string, float> value in exchangeList.rates) { string CountryName = JapaneseCountryName.ContainsKey(value.Key) ? JapaneseCountryName[value.Key] : value.Key; if (!JapaneseCountryName.ContainsKey(value.Key)) { continue; } //ExchangeFlag[value.Key].img.Source = new UriImageSource //{ // CachingEnabled = true, // Uri = new Uri(ExchangeFlag[value.Key].sUri) //}; items.Add(new Data { Text = value.Key + value.Value.ToString(), Detail = value.Value.ToString(), Icon = ExchangeFlag[value.Key].sUri }); } listView.ItemsSource = items; } // エラー表示処理 catch (System.Exception ex) { await DisplayAlert("Error", ex.Message.ToString(), "OK"); } }