1
확장 가능한 목록보기를 사용하고 각 헤더의 헤더와 하위 목록이 필요합니다. 아래 코드에서 직면하는 문제는 대상 문자열 대신 모든 문자열/키 값을 업데이트한다는 것입니다. ...모든 문자열 값을 업데이트하는 해시 맵 목록
당신이 arrayListTagNames.clear을 (사용의 ArrayList를 삭제하는private void prepareListData() {
listDataHeader = new ArrayList<String>();
listDataChild = new HashMap<String, List<String>>();
databaseProjects = new ArrayList<>();
arrayListTagNames=new ArrayList<String>();
arrayListTagNames.clear();
int countheaders = 0;
for(int i = 0; i < databasePositions.size(); i++) {
if (!(databasePositions.get(i).equals("None"))) {
listDataHeader.add(databasePositions.get(i));
databaseProjects = databaseAdapter.getAllProjectsNameOnlyDBusingserverID(databasePositionsid.get(i));
for (int j = 0; j < databaseProjects.size(); j++) {
if (!(databaseProjects.get(j).equals("None"))) {
arrayListTagNames.add(databaseProjects.get(j));
}
}
listDataChild.put(listDataHeader.get(countheaders), arrayListTagNames);
countheaders++;
arrayListTagNames.clear();
}
}
}
'ArrayList' 그 목록에 대한 참조를지도에 여러 번 넣는 것입니다. 기본적으로 각 반복마다 새 목록을 만들어야합니다. –
하지만 매번 삭제되고 새로운 위치에만 업데이트 된 목록을 추가하지만 여전히 모든 것을 대체하고 있습니까? listDataChild.put (listDataHeader.get (countheaders), arrayListTagNames); – user3633153
동일한 목록 *을 반복해서 지우고 있습니다. 자바에서 레퍼런스가 어떻게 작동하는지 배우는 것이 중요합니다. –