ExpandableListView 重写BaseAdapter 解析出数据 放到相应的地方

解决方案 »

  1.   

    你这个json数据有点问题吧,我假设第一个jsonArray的名字就是rev 如果只是解析的话可以这么写:List<String> cityList;
    Map<List<String>> map = new ......;
    //上面两个定义到全局
    //下面是解析的方法体List<String> provinceList = new ArrayList<String>();
    JSONArray provinceArray = new JSONArray("rev")for(int i = 0;i<provinceArray .length(); i++){
    JSONObject provinceJson = provinceArray.getJSONObject(i);
    String province = provinceJson .getString("n");
    provinceList .add(province);//这个list装的就全是省
    JSONArray provinceCity = provinceJson .getJSONArray("s");
            cityList = new ArrayList<String>();//这个list装市
    for(int j = 0;i<provinceCity.length(); j++){
    JSONObject cityJson = provinceCity.getJSONObject(j);
    String city = cityJson.getString("n");
    cityList.add(city );
    }
    //这样就把对应省的所有城市都装在这个map中了,你需要的时候就
    //通过省的名字找到所有城市。
    map.put(province ,cityList );
    }这样数据就算是全部解析出来存储好了,你要怎么用就看你的要求了。。
      

  2.   

    json解析为啥要自己写,网上很多库,Gson,重复造轮子!
      

  3.   

    Gson不是很好么,直接变成实体类对象
      

  4.   

    谢谢楼上各位朋友的回复
    chen262501639  hjq2013  
    请问 如果是gson的话,请问代码上面应该怎么解析呢?  gson 不太熟悉,麻烦帮忙写下吧   谢啦 
      

  5.   


    @ pang376654973 
    谢谢您的回复,麻烦再帮忙回复下吧  谢啦
    但是上面所提到的,由于要用到 比如   当点击 省 :北京     然后 跳出  市:  北京
    那么 最终要 用到 把  110000  110100 传给服务器的
    请问 如果这样的话, 上面应该怎么修改呢?“v”:” 110000”,
        “n”:”北京”,  
        “s”:[ 
    {
      “v”:”110100”,
      “n”:”北京市”
      

  6.   

    GSON有个方法。
    举个例子吧
    class CITY{
       String name;
       String id;//这里看你要啥子数据类型
    }
    GSON gson=new GSON();
    CITY city=gson.fromJson(参数1放你的JSON数据对象,参数2写CITY.class);
    这样就拿到city对象了,最好是写全点。。可以一次拿完。。就成了一个JAVA对象。。方便你操作
      

  7.   

    对了 貌似GSON是个开源包。你需要下载导入进切才可以用方法。。JSON貌似也封装了一个转换JAVA对象的方法。具体忘记了。可以查一哈。
      

  8.   


    @ lpk_6  谢谢您的回复
    gson 我不太熟悉, 那么请问 city 怎么 把省 关连起来呢?
    而且都要用到  省 和 市的 id
    或者说能不能方便的时候 帮忙写全些呢?把省的也写下吧
    谢谢啦
      

  9.   

    你可以这样创建实体啊。
    我这一哈也写不到好多
    A代表省
    B代表城市
    注意允许序列化
    public class A implements Serializable{
       private String ID;
    private String name;
    private List<B> list;
    }
    public class B implements Serializable{
    private String name;
    private String id;}
    这样你只需要获取一个A(省份对象)对象的属性就有了城市,采用一个集合的形式存储就可以了。
      

  10.   

    @lpk_6   谢谢您的回复
    想请问下,由于gson不太熟悉,如果用json解析的话, 知道怎么处理吗? 如果知道,麻烦回复下吧,谢啦
      

  11.   


    如果你要用JSON 就只有慢慢的解析咯。。一层一层的拿 对象还是可以那样创建。。只是没有GSON那么直接的方法。。就和你平时解析一样。、先解析REV,这个用个大的对象来装。或者直接一个字段用一个对象。就跟我早上发你的那个样子的创建对象。我直接给你写也没啥意思啊0 0 你要学会自己写按。
    简单的思路就是。解析初始用一个集合对象装省份,然后然后对象时省,,省里面有各自的名字 ID,以及下属城市 三个属性。然后城市属性对应采用一个对象集合。 城市也是一个对象。。有名字和ID,到时候你需要发回去 就直接通过适配器的position 来选择发送的对象就行了。至于ID 对象的属性  对象都有了。啥都有了
      

  12.   

    2L那哥们的可以。。你就position移动过去。。然后传递就行了 可以采用对象的形式。或者键值对的形式