这一章,我们重点来介绍服务器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);
- }
- 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