public BookPage() { InitializeComponent(); if (BookDB.select_all() != null) { var query = BookDB.select_all(); var titleList = new List <String>(); var isbnList = new List <String>(); var RedList = new List <int>(); var BlueList = new List <int>(); var RedList2 = new List <string>(); var BlueList2 = new List <string>(); //*をリストにぶち込んで個数分addするのでもいいのでは foreach (var user in query) { titleList.Add(user.Title); isbnList.Add(user.ISBN); RedList.Add(user.RedStar); BlueList.Add(user.BlueBook); } for (var h = 0; h < query.Count; h++) { if (RedList[h] == 1) { RedList2.Add("red_star_72.png"); } else { RedList2.Add(""); } if (BlueList[h] == 1) { BlueList2.Add("blue_book_72.png"); } else { BlueList2.Add(""); } } for (var j = 0; j < query.Count; j++) { items.Add(new Book { Name = titleList[j], ISBN = isbnList[j], RedStar = RedList[j], BlueBook = BlueList[j], RedStar2 = RedList2[j], BlueBook2 = BlueList2[j] }); } } else { items.Add(new Book { Name = "表示するものがありません" }); } BookListView.ItemsSource = items; }
//タイトルを入力して検索 private async void Serch_title(object sender, EventArgs e) { string Title = title_bar.Text; //検索文字列を%EAとかの形に変える string encodedtitle = Uri.EscapeUriString(Title); //Systemアセンブリ中に存在 UTF-8のみ requestUrl = url + "&title=" + encodedtitle; //2秒処理を待つ //await Task.Delay(2000); items.Clear(); var query = BookDB.select_all(); var ListTitle = new List <String>(); var ListReview = new List <double>(); var ListValue = new List <string>(); requestUrl = requestUrl + "&booksGenreId=001" + genreid; //HTTPアクセスメソッドを呼び出す string APIdata = await GetApiAsync(); //jsonをstringで受け取る //HTTPアクセス失敗処理(404エラーとか名前解決失敗とかタイムアウトとか) if (APIdata is null) { await DisplayAlert("接続エラー", "接続に失敗しました", "OK"); } /* * //レスポンス(JSON)をstringに変換-------------->しなくていい * Stream s = GetMemoryStream(APIdata); //GetMemoryStreamメソッド呼び出し * StreamReader sr = new StreamReader(s); * string json = sr.ReadToEnd(); */ /* * //デシリアライズ------------------>しなくていい * var rakutenBooks = JsonConvert.DeserializeObject<RakutenBooks>(json.ToString()); */ //パースする *重要* パースとは、文法に従って分析する、品詞を記述する、構文解析する、などの意味を持つ英単語。 var json = JObject.Parse(APIdata); //stringのAPIdataをJObjectにパース JValue countV = (JValue)json["hits"]; string count = countV.Value.ToString(); int getCount = int.Parse(count); var Items = JArray.Parse(json["Items"].ToString()); //Itemsは配列なのでJArrayにパース //結果を出力 foreach (JObject jobj in Items) { //↓のように取り出す JValue titleValue = (JValue)jobj["title"]; string title = (string)titleValue.Value; JValue reviewAverageValue = (JValue)jobj["reviewAverage"]; string reviewAverage = (string)reviewAverageValue.Value; double Review = double.Parse(reviewAverage); JValue titleKanaValue = (JValue)jobj["titleKana"]; string titleKana = (string)titleKanaValue.Value; JValue itemCaptionValue = (JValue)jobj["itemCaption"]; string itemCaption = (string)itemCaptionValue.Value; JValue gazoValue = (JValue)jobj["largeImageUrl"]; string gazo = (string)gazoValue.Value; ListTitle.Add(title); ListReview.Add(Review); } ; for (var j = 0; j < Items.Count; j++) { if (ListReview[j] <= 0.25) { ListValue.Add("value_0_.png"); } else if (ListReview[j] <= 0.75) { ListValue.Add("value_0_5.png"); } else if (ListReview[j] <= 1.25) { ListValue.Add("value_1_.png"); } else if (ListReview[j] <= 1.75) { ListValue.Add("value_1_5.png"); } else if (ListReview[j] <= 2.25) { ListValue.Add("value_2_.png"); } else if (ListReview[j] <= 2.75) { ListValue.Add("value_2_5.png");; } else if (ListReview[j] <= 3.25) { ListValue.Add("value_3_.png"); } else if (ListReview[j] <= 3.75) { ListValue.Add("value_3_5.png"); } else if (ListReview[j] <= 4.25) { ListValue.Add("value_4_.png"); } else if (ListReview[j] <= 4.75) { ListValue.Add("value_4_5.png"); } else { ListValue.Add("value_5_.png"); } items.Add(new Book2 { Name = ListTitle[j], Value = ListReview[j], ValueImage = ListValue[j] }); } RankListView.ItemsSource = items; //リフレッシュを止める this.RankListView.IsRefreshing = false; }
/// <summary> /// リフレッシュ時に呼ばれる /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private async void OnRefreshing(object sender, EventArgs e) { //2秒処理を待つ await Task.Delay(2000); items.Clear(); if (BookDB.select_all() != null) { var query = BookDB.select_all(); var titleList = new List <String>(); var isbnList = new List <String>(); var RedList = new List <int>(); var BlueList = new List <int>(); var RedList2 = new List <string>(); var BlueList2 = new List <string>(); //*をリストにぶち込んで個数分addするのでもいいのでは foreach (var user in query) { titleList.Add(user.Title); isbnList.Add(user.ISBN); RedList.Add(user.RedStar); BlueList.Add(user.BlueBook); } for (var h = 0; h < query.Count; h++) { if (RedList[h] == 1) { RedList2.Add("red_star_72.png"); } else { RedList2.Add(""); } if (BlueList[h] == 1) { BlueList2.Add("blue_book_72.png"); } else { BlueList2.Add(""); } } for (var j = 0; j < query.Count; j++) { items.Add(new Book { Name = titleList[j], ISBN = isbnList[j], RedStar = RedList[j], BlueBook = BlueList[j], RedStar2 = RedList2[j], BlueBook2 = BlueList2[j] }); } } else { items.Add(new Book { Name = "表示するものがありません" }); } BookListView.ItemsSource = items; //リフレッシュを止める this.BookListView.IsRefreshing = false; }
//--------------------------------Serchボタンイベントハンドラ----------------------------------- private async void Serch(object sender, EventArgs e) { //2秒処理を待つ await Task.Delay(2000); items.Clear(); var query = BookDB.select_all(); var ListTitle = new List <String>(); var ListReview = new List <double>(); requestUrl = url + "&booksGenreId=001" + genreid; //URLにISBNコードを挿入 //HTTPアクセスメソッドを呼び出す string APIdata = await GetApiAsync(); //jsonをstringで受け取る //HTTPアクセス失敗処理(404エラーとか名前解決失敗とかタイムアウトとか) if (APIdata is null) { await DisplayAlert("接続エラー", "接続に失敗しました", "OK"); } /* * //レスポンス(JSON)をstringに変換-------------->しなくていい * Stream s = GetMemoryStream(APIdata); //GetMemoryStreamメソッド呼び出し * StreamReader sr = new StreamReader(s); * string json = sr.ReadToEnd(); */ /* * //デシリアライズ------------------>しなくていい * var rakutenBooks = JsonConvert.DeserializeObject<RakutenBooks>(json.ToString()); */ //パースする *重要* パースとは、文法に従って分析する、品詞を記述する、構文解析する、などの意味を持つ英単語。 var json = JObject.Parse(APIdata); //stringのAPIdataをJObjectにパース var Items = JArray.Parse(json["Items"].ToString()); //Itemsは配列なのでJArrayにパース //結果を出力 foreach (JObject jobj in Items) { //↓のように取り出す JValue titleValue = (JValue)jobj["title"]; string title = (string)titleValue.Value; JValue reviewAverageValue = (JValue)jobj["reviewAverage"]; string reviewAverage = (string)reviewAverageValue.Value; double Review = double.Parse(reviewAverage); JValue titleKanaValue = (JValue)jobj["titleKana"]; string titleKana = (string)titleKanaValue.Value; JValue itemCaptionValue = (JValue)jobj["itemCaption"]; string itemCaption = (string)itemCaptionValue.Value; JValue gazoValue = (JValue)jobj["largeImageUrl"]; string gazo = (string)gazoValue.Value; ListTitle.Add(title); ListReview.Add(Review); } ; for (var j = 0; j < 30; j++) { items.Add(new Book2 { Name = ListTitle[j], Value = ListReview[j] }); } for (var i = 0; i < items.Count; i++) { if (items[i].Value <= 0.25) { items[i].ValueImage = "value_0.png"; } else if (items[i].Value <= 0.75) { items[i].ValueImage = "value_0.5.png"; } else if (items[i].Value <= 1.25) { items[i].ValueImage = "value_1.png"; } else if (items[i].Value <= 1.75) { items[i].ValueImage = "value_1.5.png"; } else if (items[i].Value <= 2.25) { items[i].ValueImage = "value_2.png"; } else if (items[i].Value <= 2.75) { items[i].ValueImage = "value_2.5.png"; } else if (items[i].Value <= 3.25) { items[i].ValueImage = "value_3.png"; } else if (items[i].Value <= 3.75) { items[i].ValueImage = "value_3.5.png"; } else if (items[i].Value <= 4.25) { items[i].ValueImage = "value_4.png"; } else if (items[i].Value <= 4.75) { items[i].ValueImage = "value_4.5.png"; } else { items[i].ValueImage = "value_5.png"; } } RankListView.ItemsSource = items; //リフレッシュを止める this.RankListView.IsRefreshing = false; }