这一章,我们重点来介绍服务器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(); -
} -
-
} -
-
-
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); -
} -
}); -
-
} -
-
-
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); -
-
} -
-
-
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地址
要源码的请发邮件地址