這一章,我們重點來介紹服務器Mysql數據庫通過PHP將Json數據交給Android來處理,同學們初看一定覺得好多專業術語哦,呵呵,其實,等我講完,大傢應該都能理解,好瞭,首先我們來看數據庫,Mysql數據庫,做過網站的同學應該對Mysql數據庫不陌生,我們先在Mysql數據庫中創建庫表跟數據
接下來就要將Mysql的數據暴露給Android瞭,這裡我用瞭ThinkPHP模板
這裡就不講ThinkPHP的數據庫連接之類的瞭,通過ThinkPHP將數據返回成Json數據
這裡先上圖吧
好,接下來就是如何將網絡Json數據轉入Android中瞭
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.json.JSONArray;
import org.json.JSONObject;
import android.app.Activity;
import android.os.Bundle;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import com.kang.http.HttpConnectionUtil;
import com.kang.http.HttpConnectionUtil.HttpConnectionCallback;
import com.kang.http.HttpConnectionUtil.HttpMethod;
public class JsonFromPHPDemo extends Activity
{
private ListView listView;
private SimpleAdapter adapter;
protected List<Person> persons;
private Person person;
@Override
protected void onCreate(Bundle savedInstanceState)
{
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.xml_handler);
listView = (ListView) findViewById(R.id.xml_list);
try
{
// 自完義適配方法
getAdapter();
} catch (Exception e)
{
e.printStackTrace();
}
}
/**
* 自定義方法,從網絡取得數據,並將數據放入ListView中
*/
private void getAdapter()
{
//網址
String url = "http://192.168.1.105/PHPDemo/index.php/Index/show";
//上節課講的網絡連接方法
HttpConnectionUtil connUtil = new HttpConnectionUtil();
connUtil.asyncConnect(url, HttpMethod.POST,
new HttpConnectionCallback()
{
@Override
public void execute(String response)
{
persons = JsonToList(response);
setInAdapter();
listView.setAdapter(adapter);
}
});
}
/**
* 將數據配入ListView中
*/
protected void setInAdapter()
{
List<Map<String, String>> lists = new ArrayList<Map<String, String>>();
// 將persons中的數據轉換到ArrayList<Map<String,String>>中
// String>>中,因為SimpleAdapter要用這個類型的數據進行適配
Map<String, String> map;
for (Person p : persons)
{
map = new HashMap<String, String>();
map.put("id", p.getId());
map.put("status", p.getStatus());
map.put("name", p.getName());
map.put("tool", p.getTool());
map.put("number", p.getNumber());
lists.add(map);
}
// HashMap<String, String>中的key
String[] from = { "id", "status", "name", "tool", "number" };
// list_item.xml中對應的控件ID
int[] to = { R.id.item_id, R.id.item_status, R.id.item_name,
R.id.item_tool, R.id.item_number };
adapter = new SimpleAdapter(this, lists, R.layout.handler_list_item,
from, to);
}
/**
* 將Json字符串轉換成List<Person>數據
*
* @param response
* 輸入的Json字符串
* @return
*/
protected List<Person> JsonToList(String response)
{
List<Person> list = new ArrayList<Person>();
try
{
// 將字符串轉換為Json數組
JSONArray array = new JSONArray(response);
// 數組長度
int length = array.length();
for (int i = 0; i < length; i++)
{
// 將每一個數組再轉換成Json對象
JSONObject obj = array.getJSONObject(i);
person = new Person();
person.setId(obj.getString("id"));
person.setStatus(obj.getString("status"));
person.setName(obj.getString("name"));
person.setTool(obj.getString("tool"));
person.setNumber(obj.getString("number"));
list.add(person);
} www.aiwalls.com
return list;
} catch (Exception e)
{
e.printStackTrace();
}
return null;
}
}
這裡綜合瞭前面幾章的內容,有網絡傳輸數據,有Json處理等,希望同學們認真學習,謝謝。
這裡要特別提醒的是因為服務器是架在自己電腦裡的,這裡的網址是http://192.168.1.105/PHPDemo/index.php/Index/show,千萬不能寫成localhost,需要寫具體的IP地址
源碼下載:Mysql+Json+Android
摘自 kangkangz4的專欄