Android[中级教程]第十章 Mysql+Json+Android的组合

这一章,我们重点来介绍服务器Mysql数据库通过PHP将Json数据交给Android来处理,同学们初看一定觉得好多专业术语哦,呵呵,其实,等我讲完,大家应该都能理解,好了,首先我们来看数据库,Mysql数据库,做过网站的同学应该对Mysql数据库不陌生,我们先在Mysql数据库中创建库表跟数据

Android[中级教程]第十章 Mysql+Json+Android的组合

接下来就要将Mysql的数据暴露给Android了,这里我用了ThinkPHP模板

这里就不讲ThinkPHP的数据库连接之类的了,通过ThinkPHP将数据返回成Json数据

Android[中级教程]第十章 Mysql+Json+Android的组合

这里先上图吧

Android[中级教程]第十章 Mysql+Json+Android的组合

好,接下来就是如何将网络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); } 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