首页 > 程序开发 > 移动开发 > Android >

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

2011-11-23

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

这一章,我们重点来介绍服务器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.2cto.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的专栏
相关文章
最新文章
热点推荐