频道栏目
首页 > 资讯 > Android > 正文

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

11-11-23        来源:[db:作者]  
收藏   我要投稿

 

这一章,我们重点来介绍服务器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的专栏
相关TAG标签
上一篇:Android[高级教程] Android数据库SQLite表内设置外键
下一篇:Android应用模块之间的交互方式和接口定义
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站