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();
}
}
}
あなたはただ1つの 'ArrayList'を作成していますが、そのリストへの参照をマップに複数回入れます。基本的には、各反復ごとに新しいリストを作成する必要があります。 –
しかし、私は毎回消して、新しい位置だけに更新されたリストを追加しますが、それでもすべてを置き換えていますか? listDataChild.put(listDataHeader.get(countheaders)、arrayListTagNames); – user3633153
*同じリスト*を繰り返し消去しています。 Javaで参照がどのように機能するかを学ぶことが重要です。 –