Java 为什么不';这不是循环工作吗?
这是一个android应用程序,它从两个不同的JSON URL获取数据。然后我想混合他们的数据并把它们放在地图上。为此,我使用嵌套的for循环。但问题是它只显示年份和SYSTEMDATA2,而不显示SYSTEMDATA1。我认为我的嵌套循环不正确 有人知道原因吗Java 为什么不';这不是循环工作吗?,java,android,json,for-loop,hashmap,Java,Android,Json,For Loop,Hashmap,这是一个android应用程序,它从两个不同的JSON URL获取数据。然后我想混合他们的数据并把它们放在地图上。为此,我使用嵌套的for循环。但问题是它只显示年份和SYSTEMDATA2,而不显示SYSTEMDATA1。我认为我的嵌套循环不正确 有人知道原因吗 for(int i = 0; i < array2System1.length(); i++){ c1 = array2System1.getJSONObject(i); for(int x =
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);
}
for(int i=0;ivalue
HashMap=newHashMap();
map.put(SYSTEMDATA1,valueSystem1);
map.put(SYSTEMDATA2,valueSystem2);
地图放置(年,年);
添加(地图);
list=(ListView)findViewById(R.id.list);
ListAdapter=new SimpleAdapter(Search.this,mylist,
R.layout.list_M,
新字符串[]{SYSTEMDATA1,SYSTEMDATA2,YEAR},新int[]{
R.id.systemData1,R.id.systemData2,R.id.years});
mylist.setAdapter(适配器);
}
结果应该是这样的
年份值(SYSTEMDATA2)值(SYSTEMDATA1)
当前问题
它不显示其中一个值。(SYSTEMDATA1或SYSTEMDATA2)
新更新
//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();
}
//获取JSON数组
JSONObject myJson1=jsons[0];
JSONObject myJson2=jsons[1];
试一试{
List listValues=新的ArrayList();
JSONArray array1C1=myJson1.getJSONArray(“myDATA”);
JSONArray array2C1=array1C1.getJSONArray(1);
JSONArray array1C2=myJson2.getJSONArray(“myDATA”);
JSONArray array2C2=array1C2.getJSONArray(1);
对于(inti=0;ifor)(inti=0;ifor)(inti=0;ifor)(inti=0;ifor)(inti=0;i您需要将所有代码放在内部循环中。当前您只需关闭内部循环-它运行并覆盖c2
,而不执行任何操作
比如:
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);
}
}
for(int i=0;ivalue
HashMap=newHashMap();
map.put(SYSTEMDATA1,valueSystem1);
map.put(SYSTEMDATA2,valueSystem2);
地图放置(年,年);
添加(地图);
}
}
您需要将所有代码放入内部循环。当前,您只需关闭内部循环-它运行并覆盖c2
,而不执行任何操作
比如:
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);
}
}
for(int i=0;ivalue
HashMap=newHashMap();
map.put(SYSTEMDATA1,valueSystem1);
map.put(SYSTEMDATA2,valueSystem2);
地图放置(年,年);
添加(地图);
}
}
您需要将所有代码放入内部循环。当前,您只需关闭内部循环-它运行并覆盖c2
,而不执行任何操作
比如:
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);
}
}
for(int i=0;ivalue
HashMap=newHashMap();
map.put(SYSTEMDATA1,valueSystem1);
map.put(SYSTEMDATA2,valueSystem2);
地图放置(年,年);
添加(地图);
}
}
您需要将所有代码放入内部循环。当前,您只需关闭内部循环-它运行并覆盖c2
,而不执行任何操作
比如:
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);
}
}
for(int i=0;ivalue
HashMap=newHashMap();
map.put(SYSTEMDATA1,valueSystem1);
map.put(SYSTEMDATA2,valueSystem2);
地图放置(年,年);
添加(地图);
}
}
第二个for循环很早就关闭了。它应该如下所示
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);
} // This is where it should get closed
for(int x=0;xvalue
HashMap=newHashMap();
map.put(SYSTEMDATA1,valueSystem1);
map.put(SYSTEMDATA2,valueSystem2);
地图放置(年,年);
添加(地图);
}//这是它应该关闭的地方
否则,您只需重新分配c2变量,并失去最后一个值的其他值
// Adding value HashMap key => value
HashMap<String, String> map = new HashMap<String, String>();
map.put(SYSTEMDATA1, valueSystem1);
map.put(SYSTEMDATA2_KEY, valueSystem2);
map.put(YEAR, year);
//you can't have 2 entries with the same key
private static final String SYSTEMDATA2_KEY = "value2";
// Create a new Map
Map<String, String> map = new HashMap<String, String>();
map.put(SYSTEMDATA1, val1);
map.put(SYSTEMDATA2_KEY, val2);
map.put(YEAR, year);
// Create a new adapter to attach this listView
String[] adapterKeys = new String[] {SYSTEMDATA1, SYSTEMDATA2_KEY, YEAR};