/**解析json数据**/
        JSONObject json = new JSONObject(location);
        /**接收/获取JSON对象里的数组provinces*/
        JSONArray data = json.optJSONArray("provinces");
        /**下面是获取省市**/
        for (int i = 0; i < data.length();i++) {
            JSONObject data1 = data.getJSONObject(i++);
            JSONObject data2 = data.getJSONObject(i++);
            JSONObject data3 = data.getJSONObject(i++);
            JSONObject data4 = data.getJSONObject(i++);            String location_S1 = data1.getString("name");
            String location_S2 = data2.getString("name");
            String location_S3 = data3.getString("name");
            String location_S4 = data4.getString("name");
            Location_get_set location_s = new Location_get_set();
            location_s.setProvinceName1(location_S1);
            location_s.setProvinceName2(location_S2);
            location_s.setProvinceName3(location_S3);
            location_s.setProvinceName4(location_S4);
            popup_list.add(location_s);
上面代码能拿到JSON数据中1,2 ,3,4位置的值;并在BaseAdapter适配器一行中的TextView1,TextView2.TextView3,TextView4中也能赋值;也可以在UI显示了,可问题是当BaseAdapter适配器给第二行赋值时应该从5,6,7,8,位置取值走,结果在for循环中是从6 7 8 9位置取出的,请求大神们邦我改改这个循环那么来设计,才能拿到5位置上的值,我把for循环中最后一个i++改成i后,更是一个结果都取不出来,求~~~~~~~~··

解决方案 »

  1.   

    代码中没有BaseAdapter啊,在JSONObject data1 = data.getJSONObject(i++); 中不要使用i++,通过i即可取到json数组中的每一行数据,然后再对json数组中某个字段进行操作
      

  2.   


    这要看你需求是怎样了,你现在每个循环i++,5次 第一次0,1,2,3,4;第二次 5,6,7,8,9 。你第一次0不取,第二次5当然也取不到咯。你可以把第一次取值单独放在循环外,循环内从5开始取值。如果是每次取4个值,把i=0改为i=1, JSONObject data4 = data.getJSONObject(i++);改为 JSONObject data4 = data.getJSONObject(i);
      

  3.   

    问题找得到了,data4应该是i,不是i++;是适配器List不能接长度不够,里面有空值,下一解决空值问题,