java - ArrayList中的HashMap在循环之外不存在

标签 java android-studio expandablelistadapter

我有一个包含 HashMap 的 ArrayList。

Example of one of the Arraylist lines:
1 = {HashMap@831906200928}  size = 10  
 0 = {HashMap$HashMapEntry@831906220224} "0" -> "false"  
 1 = {HashMap$HashMapEntry@831906220256} "1" -> "false"    
 2 = {HashMap$HashMapEntry@831906220288} "2" -> "false"   
 3 = {HashMap$HashMapEntry@831906220320} "3" -> "false"  
 4 = {HashMap$HashMapEntry@831906220352} "4" -> "false"  
 5 = {HashMap$HashMapEntry@831906220384} "5" -> "false"  
 6 = {HashMap$HashMapEntry@831906220416} "6" -> "false"  
 7 = {HashMap$HashMapEntry@831906220448} "7" -> "false"  
 8 = {HashMap$HashMapEntry@831906220480} "8" -> "false"  
 9 = {HashMap$HashMapEntry@831906220512} "9" -> "false"

当我退出循环时,所有 HashMap 都消失了,取而代之的是 ArrayList 大小仍然保留,但这就是所有列表:

iscompleted = {ArrayList@831906354944}  size = 11
 0 = {HashMap@831906354968}  size = 0  
 1 = {HashMap@831906354968}  size = 0  
 2 = {HashMap@831906354968}  size = 0  
 3 = {HashMap@831906354968}  size = 0  
 4 = {HashMap@831906354968}  size = 0    
 5 = {HashMap@831906354968}  size = 0  
 6 = {HashMap@831906354968}  size = 0  
 7 = {HashMap@831906354968}  size = 0  
 8 = {HashMap@831906354968}  size = 0  
 9 = {HashMap@831906354968}  size = 0  
 10 = {HashMap@831906354968}  size = 0 


>         ArrayList<HashMap<String, Boolean>> iscompleted = new ArrayList<HashMap<String, Boolean>>();
>         HashMap map = new HashMap<String, Object>();
>         for (i=0; i<_listDataHeader.size(); i++) {
>             for (int j=1; j<_listDataChild.size(); j++){
>                 map.put(j-1, tasks.get(x).get("isCompleted"));
>                 x++;
>             }
>             iscompleted.add(map);
>             map.clear();
>         }

最佳答案

您将相同的 HashMap 实例放入列表中,并在每次迭代后清除它。

您应该为要添加到列表中的每个元素创建一个新的HashMap:

     ArrayList<HashMap<String, Boolean>> iscompleted = new ArrayList<HashMap<String, Boolean>>();
     for (i=0; i<_listDataHeader.size(); i++) {
         HashMap map = new HashMap<String, Object>();
         for (int j=1; j<_listDataChild.size(); j++){
             map.put(j-1, tasks.get(x).get("isCompleted"));
             x++;
         }
         iscompleted.add(map);
     }

关于java - ArrayList中的HashMap在循环之外不存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34449996/

相关文章:

java - 请帮助阅读Java代码中的这个抽象数据类型

android - 找不到vectorDrawbles

android - getChildView 未被调用

android - 向下滚动后可扩展的 ListView Child 返回错误的 View

android - 如何将变量的值传递给android中的另一个方法

java - 通过 Java 建立 MySQL 表时出错

java - 安卓数据绑定(bind)。如何为生成的 *Binding 类设置布局 xml 文件

java - 在 Java 中调用 SQL Server 存储过程时遇到问题

android - 在 Android Studio 中显示打开选项卡的列表

Android 从终端终止应用程序