【发布时间】:2017-10-01 03:09:42
【问题描述】:
我正在使用可扩展的列表视图,并且需要每个标题的标题列表和子标题...我在下面的代码中面临的问题是它正在更新所有字符串/键值而不是目标值...
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<String>,然后在地图中多次引用该列表。基本上,您需要在每次迭代时创建一个新列表。 -
但我每次都在清除并将更新的列表添加到新位置,但它仍然在替换所有? listDataChild.put(listDataHeader.get(countheaders), arrayListTagNames);
-
您正在反复清除同一个列表。了解引用在 Java 中的工作原理是至关重要的。
标签: java android hashmap expandablelistview