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

 

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

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

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

这里先上图吧

好,接下来就是如何将网络Json数据转入Android中了

  1. import java.util.ArrayList;  
  2. import java.util.HashMap;  
  3. import java.util.List;  
  4. import java.util.Map;  
  5.   
  6. import org.json.JSONArray;  
  7. import org.json.JSONObject;  
  8.   
  9. import android.app.Activity;  
  10. import android.os.Bundle;  
  11. import android.widget.ListView;  
  12. import android.widget.SimpleAdapter;  
  13.   
  14. import com.kang.http.HttpConnectionUtil;  
  15. import com.kang.http.HttpConnectionUtil.HttpConnectionCallback;  
  16. import com.kang.http.HttpConnectionUtil.HttpMethod;  
  17.   
  18. public class JsonFromPHPDemo extends Activity  
  19. {  
  20.     private ListView listView;  
  21.     private SimpleAdapter adapter;  
  22.     protected List<Person> persons;  
  23.     private Person person;  
  24.   
  25.     @Override  
  26.     protected void onCreate(Bundle savedInstanceState)  
  27.     {  
  28.         // TODO Auto-generated method stub   
  29.         super.onCreate(savedInstanceState);  
  30.         setContentView(R.layout.xml_handler);  
  31.   
  32.         listView = (ListView) findViewById(R.id.xml_list);  
  33.         try  
  34.         {  
  35.             // 自完义适配方法   
  36.             getAdapter();  
  37.   
  38.         } catch (Exception e)  
  39.         {  
  40.             e.printStackTrace();  
  41.         }  
  42.   
  43.     }  
  44.       
  45.     /** 
  46.      * 自定义方法,从网络取得数据,并将数据放入ListView中 
  47.      */  
  48.     private void getAdapter()  
  49.     {  
  50.         //网址   
  51.         String url = "http://192.168.1.105/PHPDemo/index.php/Index/show";  
  52.         //上节课讲的网络连接方法   
  53.         HttpConnectionUtil connUtil = new HttpConnectionUtil();  
  54.         connUtil.asyncConnect(url, HttpMethod.POST,  
  55.                 new HttpConnectionCallback()  
  56.                 {  
  57.   
  58.                     @Override  
  59.                     public void execute(String response)  
  60.                     {  
  61.   
  62.                         persons = JsonToList(response);  
  63.                         setInAdapter();  
  64.                         listView.setAdapter(adapter);  
  65.                     }  
  66.                 });  
  67.   
  68.     }  
  69.       
  70.     /** 
  71.      * 将数据配入ListView中 
  72.      */  
  73.     protected void setInAdapter()  
  74.     {  
  75.         List<Map<String, String>> lists = new ArrayList<Map<String, String>>();  
  76.         // 将persons中的数据转换到ArrayList<Map<String,String>>中   
  77.         // String>>中,因为SimpleAdapter要用这个类型的数据进行适配   
  78.         Map<String, String> map;  
  79.         for (Person p : persons)  
  80.         {  
  81.             map = new HashMap<String, String>();  
  82.   
  83.             map.put("id", p.getId());  
  84.             map.put("status", p.getStatus());  
  85.             map.put("name", p.getName());  
  86.             map.put("tool", p.getTool());  
  87.             map.put("number", p.getNumber());  
  88.   
  89.             lists.add(map);  
  90.         }  
  91.   
  92.         // HashMap<String, String>中的key   
  93.         String[] from = { "id""status""name""tool""number" };  
  94.         // list_item.xml中对应的控件ID   
  95.         int[] to = { R.id.item_id, R.id.item_status, R.id.item_name,  
  96.                 R.id.item_tool, R.id.item_number };  
  97.   
  98.         adapter = new SimpleAdapter(this, lists, R.layout.handler_list_item,  
  99.                 from, to);  
  100.   
  101.     }  
  102.   
  103.     /** 
  104.      * 将Json字符串转换成List<Person>数据 
  105.      *  
  106.      * @param response 
  107.      *            输入的Json字符串 
  108.      * @return 
  109.      */  
  110.     protected List<Person> JsonToList(String response)  
  111.     {  
  112.         List<Person> list = new ArrayList<Person>();  
  113.   
  114.         try  
  115.         {  
  116.             // 将字符串转换为Json数组   
  117.             JSONArray array = new JSONArray(response);  
  118.             // 数组长度   
  119.             int length = array.length();  
  120.             for (int i = 0; i < length; i++)  
  121.             {  
  122.                 // 将每一个数组再转换成Json对象   
  123.                 JSONObject obj = array.getJSONObject(i);  
  124.   
  125.                 person = new Person();  
  126.                 person.setId(obj.getString("id"));  
  127.                 person.setStatus(obj.getString("status"));  
  128.                 person.setName(obj.getString("name"));  
  129.                 person.setTool(obj.getString("tool"));  
  130.                 person.setNumber(obj.getString("number"));  
  131.   
  132.                 list.add(person);  
  133.   
  134.             }  
  135.   
  136.             return list;  
  137.         } catch (Exception e)  
  138.         {  
  139.             e.printStackTrace();  
  140.         }  
  141.         return null;  
  142.     }  
  143.   
  144. }  

这里综合了前面几章的内容,有网络传输数据,有Json处理等,希望同学们认真学习,谢谢。

这里要特别提醒的是因为服务器是架在自己电脑里的,这里的网址是http://192.168.1.105/PHPDemo/index.php/Index/show,千万不能写成localhost,需要写具体的IP地址

源码下载:Mysql+Json+Android

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值