List add 방법 으로 데 이 터 를 추가 할 때 덮어 쓰기 문제
private void loadData() {
Map contentMap = null;
classroomListItems.clear(); // classroomListItems = new ArrayList>>();
for(String key : MainActivity.classroomMap.keySet()) {
contentListItems.clear(); // contentListItems = new ArrayList< Map >();
for(int j = 0; j < MainActivity.classroomMap.get(key).size(); ++j) {
contentMap = new HashMap();
contentMap.put("courseTime", MainActivity.classroomMap.get(key).get(j).getStarttime().substring(11, 16) + "-"
+ MainActivity.classroomMap.get(key).get(j).getEndtime().substring(11, 16));
contentMap.put("courseName", MainActivity.classroomMap.get(key).get(j).getCourse_name());
contentMap.put("classroomName", MainActivity.classroomMap.get(key).get(j).getClassroom_name());
contentListItems.add(contentMap);
}
classroomListItems.add(contentListItems);
Log.e("contentListItems", contentListItems.get(0).get("classroomName").toString());
}
for(List
위 코드 에 문제 가 있 습 니 다.제 가 실 행 했 을 때 classroom ListItems 의 size 는 정상 적 이 고 그 중의 요 소 는 모두 마지막 에 추 가 된 contentListItems 입 니 다.즉,contentListItems 를 추가 할 때마다
앞의 데 이 터 를 덮어 썼 습 니 다.
물론 문제 의 원인 도 간단 하 다.
내 가 반복 해서 데 이 터 를 추가 할 때,나 는 단지 한 번 의 contentListItems,즉 하나의 contentListItems 라 는 List 만 밝 혔 다.그러면 내 가 Map 데 이 터 를 기록 할 때마다 List 는 같은 List 이다.그래서 내 가 이 List 를 classroom ListItems 에 추가 할 때,추 가 된 본 질 은 contentListItems 의 주소 이기 때문에 매번 같은 contentListItems 이다.이렇게 하면 뒤의 데 이 터 는 앞의 데 이 터 를 덮어 씁 니 다.
해결 방법 은 매번 하나의 List 를 만 드 는 것 이다.
for(String key : MainActivity.classroomMap.keySet()) {
contentListItems = new ArrayList< Map >();
contentListItems.clear();
....
}
문 제 는 매우 간단 하지만,나 자신 이 너무 부주의 할 뿐이다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Is Eclipse IDE dying?In 2014 the Eclipse IDE is the leading development environment for Java with a market share of approximately 65%. but ac...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.