2015-07-12 94 views
-1

我已经摆弄了几个小时,基本上我正在尝试创建一个JsonObject并在for循环中获取它的值并将其设置为TextView 。据工作但是我只获得了第二循环的价值观,澄清这是从我的JSONObjectAndroid setText for循环中保存JsonObject值覆盖本身

{"Areas":[{"City":"Dallas","State":"Texas"},{"City":"Seattle","State":"Washington"}]} 

输出但是我只得到{“城市”:“西雅图”,“国家”:“华盛顿“}我的Textviews setText中的循环中的第二个值。我想在Textview中同时获得第一个和第二个循环。

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.mystates); 
    try { 
    // Create my Json Array 
     JSONObject newJsonObject = new JSONObject(); 

     JSONArray myarray = new JSONArray(); 
     JSONObject states= new JSONObject(); 
     states.put("City", "Dallas"); 
     states.put("State", "Texas"); 
     JSONObject states2= new JSONObject(); 
     states2.put("City", "Seattle"); 
     states2.put("State", "Washington"); 
     myarray.put(states); 
     myarray.put(states2); 
     newJsonObject.put("Areas", array); 
// Ends Json Array 

     //set Textviews 
     TextView citiess = (TextView)findViewById(R.id.citiess); 
     TextView statess = (TextView)findViewById(R.id.statess); 
String cityString=""; 
String stateString=""; 
     // retrieve Json Array and set For Loop 
     JSONArray jaLocalstreams = names.getJSONArray("Areas"); 
     for(int position=0;position<jaLocalstreams.length();position++) 
     { 
     JSONObject JO = jaLocalstreams.getJSONObject(position); 
     cityString= JO.getString("City"); 
     stateString = JO.getString("State"); 
      citiess.setText(""+cityString); 
      statess.setText(""+stateString); 
    } 
    } 
    catch (Exception e) { 
     e.printStackTrace(); 
    } 

} 

我已经非常缩小的问题区域,我认为这是这个

 citiess.setText(""+cityString); 
     statess.setText(""+stateString); 

的setText与最新的人这是有意义的替换值,我怎样才能改变这种做法,它不这样做?当我把这个for循环

System.err.println(cityString+","+stateString); 

我得到达拉斯,得克萨斯州和华盛顿州西雅图的循环值。这就是为什么我确信setText是问题的任何建议将是伟大的。

+0

你想要什么以后设置这些值的setText将打印最后一个值?仍然有点混乱... –

+0

我想写我的JsonObject的值到我的Textviews中。 JsonObject创建了2个不同的值,即得克萨斯州达拉斯和华盛顿州西雅图。问题是我只得到了西雅图,华盛顿的价值而不是其他的。 – user1949387

回答

2

它似乎cityString,stateString得到环路覆盖和only.Therfore你需要附加在JSON字符串值,然后环路

for (int position = 0; position < jaLocalstreams.length(); position++) { 
    JSONObject JO = jaLocalstreams.getJSONObject(position); 
    cityString += JO.getString("City"); 
    stateString += JO.getString("State"); 
} 

citiess.setText("" + cityString); 
statess.setText("" + stateString); 
+0

谢谢你解决了这个问题,我对此仍然陌生。 – user1949387