哈希表列表更新所有字符串值
Hashmap list updating all string values
我正在使用可扩展列表视图,需要每个 header 的 header 和 child 的列表...我在下面的代码中遇到的问题是它正在更新所有 string/key 个值而不是目标值...
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();
}
}
}
当您使用 arrayListTagNames.clear() 清除 arrayList 时,它会影响放入 hashmap 的内容,而不是清除创建一个新的数组列表并放入 HashMap,尝试这样的事情
private void prepareListData() {
listDataHeader = new ArrayList<String>();
listDataChild = new HashMap<String, List<String>>();
databaseProjects = new ArrayList<>();
int countheaders = 0;
for(int i = 0; i < databasePositions.size(); i++) {
if (!(databasePositions.get(i).equals("None"))) {
arrayListTagNames=new ArrayList<String>();
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++;
}
}
}
我正在使用可扩展列表视图,需要每个 header 的 header 和 child 的列表...我在下面的代码中遇到的问题是它正在更新所有 string/key 个值而不是目标值...
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();
}
}
}
当您使用 arrayListTagNames.clear() 清除 arrayList 时,它会影响放入 hashmap 的内容,而不是清除创建一个新的数组列表并放入 HashMap,尝试这样的事情
private void prepareListData() {
listDataHeader = new ArrayList<String>();
listDataChild = new HashMap<String, List<String>>();
databaseProjects = new ArrayList<>();
int countheaders = 0;
for(int i = 0; i < databasePositions.size(); i++) {
if (!(databasePositions.get(i).equals("None"))) {
arrayListTagNames=new ArrayList<String>();
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++;
}
}
}