今天,要來討論的是將已存在的書籍資料,進行編輯、更新資料的動作。我們再復習一下,編輯是要從那個地方觸發。是從在ListView的列表中,在onItemClick事件中來觸發。請參考下述程式碼:
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
//取得按下ListView的那個Item的值。
String strbookname = adapterView.getItemAtPosition(i).toString();
//按下Item時,要呼叫編輯的Activity,利用Intent物件帶參數過去。
Intent it = new Intent();
it= new Intent(this,frm_book_edit.class);
it.putExtra("pname",strbookname);
startActivity(it);
//關閉本身的Activity。
this.finish();
}
接下來,我們先來看看要如何編輯、更新書籍資料。在原來的專案,再增加一個Empty Activity,Activity名稱,取名為「frm_book_edit」。再拉出四個TextView、二個EditVIew、一個Spinner及二個Button,來當做書籍名稱、簡介的輸入欄位及分類的下拉式選項。按下更新的Button,再呼叫api來更新資料庫,再回到列表的Activity。順序來排列出來。如下圖所示:
在編輯更新的程式。也是要呼叫的API,有三段。一個是將分類的資料,跟Spinner元件結合起來,才可以下拉式的方式來選取此書籍的分類。第二段,是取得原來的資料,並且要資料顯示在對應的欄位。最後一段,就是要更新的書籍名稱、簡介、所屬分類、及更新資料的id,以Http POST的方式更新在伺服器的資料庫。
第一段的API,就不介紹了。請參考之前的文章說明,我們先來看看呼叫第二段API,取得原來的資料,是用GET的方式,將書籍名稱帶回PHP的網頁,再查詢出符合的資料。請參考下述完整的程式碼:
_api_getbookinfobyname.php
<?php
//引用資料庫連接檔案
include("conn/_db_Config.php");
//取得書籍名稱
$pname = $_GET["pname"];
//查詢書籍資料的SQL語法
$sql = "select tbookinfo.*,ttaginfo.ctag_name from tbookinfo left join ttaginfo on tbookinfo.ctag_id = ttaginfo.ctag_id ".
"WHERE tbookinfo.cbook_name ='".$pname."'";
//執行SQL語法,並且將資料轉成array
$res = $db->query($sql);
$arytags = array();
while ($row = $res->fetch_assoc()) {
$arytags[] = $row;
}
//輸出成JSON字串,要加JSON_UNESCAPED_UNICODE,中文字才不會變成亂碼
echo json_encode($arytags, JSON_UNESCAPED_UNICODE);
?>
後續,就是要了解,在Android要如何連接在一起,如何要取得資料再回填到原來的欄位元件。