受賞者(団体/組織)の名称(または名称の一部)を入力して、情報を検索できる画面を追加。
以下のnameパラメーターに個人又は団体の名称のフル、又は一部をインプットし検索すれば該当の受賞者(団体)のデータを返してくれる。
https://api.nobelprize.org/2.1/laureates?name=
例えば、
https://api.nobelprize.org/2.1/laureates?name=nuclear
で検索すれば、2017年に平和賞を受賞した有名な "International Campaign to Abolish Nuclear Weapons" (ICAN)と1985年に同じく平和賞を受賞した "International Physicians for the Prevention of Nuclear War" 2件の平和賞受賞団体のデータを取得できる。
個人でも団体でも同じパラメーター(name)で検索できるのは便利。
もし、インプットした名前(フル又は一部)に合致したデータがない場合は(例えば"sakabe"で検索した場合)、以下の通り、metaデータのcountの値を0で返してくる。ブロック・コードではこれを利用して合致するデータがない場合の処理を行っている。
アプリ実行のビデオ:
スクリーン・デザイン:
左のメイン画面の下部にアイコン・ボタンを配置。赤黄点線で囲んだアイコンをタップすると検索画面へ遷移。そのほかのアイコンは装飾目的で配置しており、今のところ何ら機能を実装していない。
右画面が検索画面。
ブロック・コード:
取得したJSONデータの加工、整形、表示等は、前回、前々回と同様なので省略。
合致するデータがなかった場合の処理を中心に見てみる。
1. 変数targetURL:APIのURL
2. searchButtonをタップした際に、検索する名前がsearchNameTextBoxにインプットされていれば、API URLに対しGETリクエストを行い処理を実施する。もし、インプットなしにsearchButtonがタップされた場合は、名前のインプットを促すウインドウがポップアップする。
なお、GETリクエストを出す前に、念のため、変数の初期化を行う関数resetAllを実行しておく。
3. 取得したJSONデータの処理。
取得したJSONデータをデコードし、変数JSONに格納。=> "meta" データに含まれる "count" の値が 0 であるかどうかをチェック(赤黄点線内)
=> 0 でなければ、関係する関数を実行しデータの処理を続けListViewに表示する
=> 0 の場合は、合致するデータがない旨をポップアップウインドウに表示する(赤白点線内)
***********************************************************
前回までのブログ:
MIT App Inventor 2で遊ぶ (Nobel Prize Laureates 2)
MIT App Inventor 2で遊ぶ (Nobel Prize Laureates 1)