【发布时间】:2013-12-13 01:23:32
【问题描述】:
这是一个从两个不同的 JSON URL 获取数据的安卓应用。然后我想混合他们的数据并将它们放在地图中。为此,我使用了嵌套的 for 循环。但问题是它只显示 YEARS 和 SYSTEMDATA2 而不是 SYSTEMDATA1。我认为我的嵌套循环不正确。
有人知道原因吗?
for(int i = 0; i < array2System1.length(); i++){
c1 = array2System1.getJSONObject(i);
for(int x = 0; x < array2System2.length(); x++){
c2 = array2System2.getJSONObject(x);
}
//Storing JSON item in a Variable
valueSystem2 = c2.getString(SYSTEMDATA2);
year = c1.getString(YEAR);
valueSystem1 = c1.getString(SYSTEMDATA1);
// Adding value HashMap key => value
HashMap<String, String> map = new HashMap<String, String>();
map.put(SYSTEMDATA1, valueSystem1);
map.put(SYSTEMDATA2, valueSystem2);
map.put(YEAR, year);
mylist.add(map);
list=(ListView)findViewById(R.id.list);
ListAdapter adapter = new SimpleAdapter(Search.this, mylist,
R.layout.list_M,
new String[] {SYSTEMDATA1, SYSTEMDATA2, YEAR}, new int[] {
R.id.systemData1, R.id.systemData2, R.id.years});
mylist.setAdapter(adapter);
}
结果应该是这样的 年份值(SYSTEMDATA2) 值(SYSTEMDATA1)
当前问题 它没有显示其中一个值。 (系统数据 1 或系统数据 2) http://i40.tinypic.com/2wqykvr.png
新更新
//Getting JSON Array
JSONObject myJson1 = jsons[0];
JSONObject myJson2 = jsons[1];
try {
List<Map<String, String>> listValues = new ArrayList<Map<String, String>>();
JSONArray array1C1 = myJson1.getJSONArray("myDATA");
JSONArray array2C1 = array1C1.getJSONArray(1);
JSONArray array1C2 = myJson2.getJSONArray("myDATA");
JSONArray array2C2 = array1C2.getJSONArray(1);
for (int i=0; i<array2C1.length(); i++)
{
JSONObject entryJsonC1 = array2C1.getJSONObject(i);
String val1 = entryJsonC1.getString(SYSTEMDATA1);
String year = entryJsonC1.getString("date");
JSONObject entryJsonC2 = array2C2.getJSONObject(i);
String val2 = entryJsonC2.getString(SYSTEMDATA2);
Map<String, String> map = new HashMap<String, String>();
map.put(SYSTEMDATA1, val1);
map.put(SYSTEMDATA2, val2);
map.put(YEAR, year);
listValues.add(map);
}
list = (ListView) findViewById(R.id.list);
String[] adaptersKeys = new String[] {SYSTEMDATA1, SYSTEMDATA2, YEAR};
int[] adapterViews = new int[] {R.id.systemData1, R.id.systemData2, R.id.years};
ListAdapter adapter = new SimpleAdapter(MultiMainActivity.this, listValues, R.layout.list2, adaptersKeys, adapterViews);
list.setAdapter(adapter);
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
现在的结果是:YEAR SAME-VALUE SAME-VALUE
【问题讨论】:
-
您的第二个 for 循环在第 8 行以
}结束,而它应该更晚结束。 -
查看我的答案,您可能还有
setAdapter方法的另一个错误。我还对您的代码进行了一些优化,但仍然可以完善。 -
您能否发布(至少部分):array2System1、array2System2 的内容,并解释一下您希望如何将它们混合到地图中 - 所以混合后的地图内容示例。
-
@Melquiades 刚刚更新了我的帖子。请看一看。
-
嗨@DannyJj,请看我的回答
标签: java android json for-loop hashmap