2016-03-15 82 views
-4

我得到2,3 & 4个字符串(值)在数组中,但我无法在textview中设置值。我得到的TextView的是只有4个值也相同repeat.Please告诉我如何处理下面this.JSON:无法从JsonArray获取字符串

{ 
    results: [ 
    { 
    types: [ 
    "sublocality_level_3", 
    "sublocality", 
    "political" 
    ] 
    }, 
    { 
    types: [ 
    "point_of_interest", 
    "establishment" 
    ] 
    }, 
    { 
    types: [ 
    "travel_agency", 
    "point_of_interest", 
    "establishment" 
    ] 
    }, 
    { 
    types: [ 
    "point_of_interest", 
    "establishment" 
    ] 
    }, 
    { 
    types: [ 
    "store", 
    "point_of_interest", 
    "establishment" 
    ] 
    }, 
    { 
    types: [ 
    "dentist", 
    "health", 
    "point_of_interest", 
    "establishment" 
    ] 
    }, 
    { 
    types: [ 
    "clothing_store", 
    "store", 
    "point_of_interest", 
    "establishment" 
    ] 
    }, 
    { 
    types: [ 
    "point_of_interest", 
    "establishment" 
    ] 
    }, 
    ] 
    } 

码是什么我想:

try { 
     object = new JSONObject(url); 
     JSONArray array = object.getJSONArray("results"); 
     for (int i = 0; i < array.length(); i++){ 
      JSONObject object1 = array.getJSONObject(i); 
      JSONArray array1 = object1.getJSONArray("types"); 
      for(int j = 0; j < array1.length(); j++){ 
       if (array1.length()==2) { 
        t1 = array1.getString(0); 
        t2 = array1.getString(1); 
       } if (array1.length()==3) { 
        t1 = array1.getString(0); 
        t2 = array1.getString(1); 
        t3 = array1.getString(2); 
       } if (array1.length()==4) { 
        t1 = array1.getString(0); 
        t2 = array1.getString(1); 
        t3 = array1.getString(2); 
        t4 = array1.getString(3); 
       } 
      } 

      getterSetter.setT1(t1); 
      getterSetter.setT2(t2); 
      getterSetter.setT3(t3); 
      getterSetter.setT4(t4); 
      list.add(getterSetter); 
      adapter = new GooglePlacesAdapter(GooglePlace.this,list); 
      listView.setAdapter(adapter); 
      } 

    } catch (JSONException e) { 
     e.printStackTrace(); 
    } 
+0

什么是你所面临的问题? – Rohit5k2

+0

我无法得到字符串,它是类型arraylist中的2和3 – AndroidLover

+0

重新编辑您的问题。您的JSON文件无效。 [请首先阅读此链接](http://www.json.org/) – Bonatti

回答

0

你应该有类似这样

GetterSetter getterSetter = new GetterSetter(); 

移动此行的第一个for循环内的一行。

注意:绝对不需要inner for loop(2nd)。你可以删除那个循环,只保留if语句。

更新:您的代码应该是这样

try { 
    object = new JSONObject(url); 
    JSONArray array = object.getJSONArray("results"); 
    for (int i = 0; i < array.length(); i++){ 
     JSONObject object1 = array.getJSONObject(i); 
     JSONArray array1 = object1.getJSONArray("types"); 
     GetterSetter getterSetter = new GetterSetter(); // This line should be inside for loop 
     if (array1.length()==2) { 
      getterSetter.setT1(array1.getString(0)); 
      getterSetter.setT2(array1.getString(1)); 
     } else if (array1.length()==3) { 
      getterSetter.setT1(array1.getString(0)); 
      getterSetter.setT2(array1.getString(1)); 
      getterSetter.setT3(array1.getString(2)); 
     } else if (array1.length()==4) { 
      getterSetter.setT1(array1.getString(0)); 
      getterSetter.setT2(array1.getString(1)); 
      getterSetter.setT3(array1.getString(2)); 
      getterSetter.setT4(array1.getString(3)); 
     } 

     list.add(getterSetter); 
     adapter = new GooglePlacesAdapter(GooglePlace.this,list); 
     listView.setAdapter(adapter); 
    } 

} catch (JSONException e) { 
    e.printStackTrace(); 
} 
+0

有2个字符串的数组不响应意味着我没有获得值 – AndroidLover

+0

rohit!在这里有几个领域。当我得到50-60场时如何处理。 – AndroidLover

+0

你的'GetterSetter'类应该使用'ArrayList'而不是单个字符串。这样,你可以简单地继续向该数组列表添加字符串,并最终在循环中根据需要采取行动。 – Rohit5k2

-1

第一阵列应该是在格式不在语法

{ 
"results": [ 
{ 
    "types": [ 
    "sublocality_level_3", 
"sublocality", 
"political" 
] 
}, 
{ 
"types": [ 
"point_of_interest", 
"establishment" 
] 
}, 
{ 
"types": [ 
"travel_agency", 
"point_of_interest", 
"establishment" 
] 
}, 
{ 
"types": [ 
"point_of_interest", 
"establishment" 
] 
}, 
{ 
"types": [ 
"store", 
"point_of_interest", 
"establishment" 
] 
}, 
{ 
"types": [ 
"dentist", 
"health", 
"point_of_interest", 
"establishment" 
] 
}, 
{ 
"types": [ 
"clothing_store", 
"store", 
"point_of_interest", 
"establishment" 
] 
}, 
{ 
"types": [ 
"point_of_interest", 
"establishment" 
] 
} 
] 
} 

在代码中你这样做

try { 
    object = new JSONObject(url); 
    JSONArray array = object.getJSONArray("results"); 
    for (int i = 0; i < array.length(); i++){ 
     JSONObject object1 = array.getJSONObject(i); 
     JSONArray array1 = object1.getJSONArray("types"); 
     for(int j = 0; j < array1.length(); j++){ 
      if (array1.length()==2) { 
       t1 = array1.getString(0); 
       t2 = array1.getString(1); 
       t3 = ""; 
       t4 = ""; 
      } else if (array1.length()==3) { 
       t1 = array1.getString(0); 
       t2 = array1.getString(1); 
       t3 = array1.getString(2); 
       t3 = ""; 
       t4 = ""; 
      } else if (array1.length()==4) { 
       t1 = array1.getString(0); 
       t2 = array1.getString(1); 
       t3 = array1.getString(2); 
       t4 = array1.getString(3); 

      } 
      getterSetter.setT1(t1); 
      getterSetter.setT2(t2); 
      getterSetter.setT3(t3); 
      getterSetter.setT4(t4); 
      list.add(getterSetter); 
     } 

     adapter = new GooglePlacesAdapter(GooglePlace.this,list); 
     listView.setAdapter(adapter); 
     } 

} catch (JSONException e) { 
    e.printStackTrace(); 
} 

希望这有助于您