Это приложение для Android, которое получает данные от двух разных URL-адресов JSON. Затем я хочу смешать их данные и поместить их на карту. Для этого я использую цикл вложенных циклов. Но проблема в том, что он показывает только 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)
Текущая проблема не показывает одно из значений. (SYSTEMDATA1 или SYSTEMDATA2) http://i40.tinypic.com/2wqykvr.png
NEW UPDATE
//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 ТОТ VALUE ТОТ VALUE
Ваш второй цикл цикла заканчивается символом '}' в строке8, тогда как он должен заканчиваться намного позже. – Manitoba
Проверьте мой ответ, у вас может быть еще одна ошибка в методе 'setAdapter'. Я также немного оптимизировал ваш код, но он по-прежнему идеален. – Manitoba
Можете ли вы разместить содержимое (по крайней мере частичного): array2System1, array2System2 и объяснить, как именно вы хотите их смешать на карте, пожалуйста, так что пример содержимого карты после микширования. – Melquiades