for문으로 짜여진 예제들은 잘 돌아가는데...
반복문 사용안해서는 잘 안되네요 ㅠㅠ
뭔가 큰 착각이 있는지...
/* for (int i = 0; i < GROUPS.length; i++) {
Map<String, String> curGroupMap =
new HashMap<String, String>();
groupData.add(curGroupMap);
curGroupMap.put(KEY1, GROUPS[i]);
curGroupMap.put(KEY2, "");
List<Map<String, String>> children =
new ArrayList<Map<String, String>>();
if (CHILDREN.length > i) {
for (int j = 0; j < CHILDREN[i].length; j++) {
Map<String, String> curChildMap =
new HashMap<String, String>();
children.add(curChildMap);
curChildMap.put(KEY1, CHILDREN[i][j][0]);
curChildMap.put(KEY2, CHILDREN[i][j][1]);
}
}
childData.add(children);
}*/
여기까진 반복문의 예제.
아래는 저의 소스입니다.
밑에 주석처리하는 방식으로 세 개의 자식을 추가하면 프라푸치노 5500만 세 개로 나옵니다.
curchildMap에 아메리카노, 3500을 넣고 이것을 children에 넣고, 다시 childData로 넣어서 childData를 뿌리는 걸로 이해를 했거든요.
groupData.add(curGroupMap);
curGroupMap.put(KEY1, "스타벅스");
curGroupMap.put(KEY2, "");
curChildMap.put(KEY1, "아메리카노");
curChildMap.put(KEY2, "3500");
children.add(curChildMap); //아메리카노 3500을 children
childData.add(children); // 위의 children을 childrenData에
curChildMap.clear(); //그런다음 curChildMap은 클리어
curChildMap.put(KEY1, "카페라떼");
curChildMap.put(KEY2, "4000");
children.add(curChildMap);
childData.add(children);
curChildMap.clear();
curChildMap.put(KEY1, "프라푸치노");
curChildMap.put(KEY2, "5500");
children.add(curChildMap);
childData.add(children);
자식 노드를 구성하는 curChildMap -> children -> childData 저만 이해를 잘 못하고 있는건가요ㅠㅠ
반복문만 풀어서 썼을 뿐인데...
해결했습니다.. 배열이나 리스트는 포인터 개념이라 단순히 clear만 한다고 되는게 아니었네요 ㅠㅠ
각각 아메리카노 카페라떼 프라푸치노 세 개의 curChildMap을 생성했습니다.