Journalアプリのデータ更新については、試行錯誤の結果、
1. ListViewで選択されたデータの中から日付データを抽出し、全体の日付データリストの中での同データのindexを取得
2. 一方、すべてのIDを格納しているtag list より上記indexに該当するIDを取得
3. 同IDをキーにして、更新したデータと共にPUTリクエスト(上書き)を行う
試行錯誤の途中ですべてのデータを削除してしまったりと時間がかかったが、どうにか解決策が見つかった。
実行画面:
今回は、最終のアプリという形ではなく、実験する過程をキャプチャーした。
実験を画面(静止画)で見ていくと。。。(上記実行画面では、円山公園を大友古墳に変更)
アプリを立ち上げた時 Fetchボタンをタップしてデータを取得
ListViewより更新したいデータを選択 Articleの内容を変更。「どこかに。。。」を「円山公園に。。。」に変更し
Updateボタン(更新ボタン)をタップ
再度、Fetchボタンをタップし、更新後の
最新のデータを取得
スクリーンのデザイン:
Updateボタンと確認用のLabel3つを追加しただけ。
プログラム(ブロック):
更新の部分のみ。
1. keyDate => 更新対象データ(ListViewでタップしたデータ)の日付
dateIndex => 更新対象データの日付の日付リストの中でのindex(このindexをキーにして更新対象データのIDを取得)
2. 更新対象のデータをListViewでタップして選択。=> Save及びFetchボタンを無効にする。(後述のprocedure "selectListView"を実行)=> 更新対象データは、split ブロックにより日付(date)、タイトル(title)、記事内容(todo)の3つに分解。=> タイトルはtitelTextBox、記事内容はtodoTextBoxに表示。
dateList(取得したデータの日付のリスト)の中での日付(date)のindexを取得。=> 同indexに該当するtagList(取得したデータのIDのリスト)のIDを取得(これが更新対象データのID)
testLabel1及びtestLabel2への表示は確認のためのもの。
3. 上記で取得したID (updateKeyTag)をターゲットにして、date, title, journal(記事内容)を上書きする(PUTリクエスト)。
4. testLabel3に確認のために更新後のデータを表示する。ちょっとネーミングが悪いが、procedure "updateData" によりSave及びFetchボタンを有効にして、Updateボタンは無効にする。
*****************************
update(更新)ができると、delete(削除)も当然可能と思う。
いくつか問題は残っているが、次回は画面の体裁を整え、その他微調整なども行いたい。
※コメント投稿者のブログIDはブログ作成者のみに通知されます