【问题标题】:java.util.concurrentmodificationexception at java.util.arraylist$itr.nextjava.util.concurrentmodificationexception 在 java.util.arraylist$itr.next
【发布时间】:2021-09-06 00:10:09
【问题描述】:

我正在从 firebase 实时数据库中获取数据,并且在迭代 datasnapshot 时,当像这样将数据插入房间数据库时,我在第 493 行的行号处收到 java.util.concurrentmodificationexception at java.util.arraylist$itr.next 错误。

Inventory.getInstance(Inventory.this.getActivity(), 1).InventoryDAO().InsertData(items);

这是我得到这个错误的整个方法。

private List<InventoryEntity_TableColums> message; // Class Variable


      private synchronized void append_inventory_conversation(DataSnapshot dataSnapshot) {
        Iterator iterator = dataSnapshot.getChildren().iterator();
    
    
    
        String inventory_Msg, inventory_TO, inventory_FROM, inventory_TimeStamp, inventory_FCM_FROM, inventory_FCM_TO, inventory_Type, Random_ID, inventory_FROM_ID, inventory_Receiver_ID;
    
    
        while (iterator.hasNext()) {
            inventory_Msg = (String) ((DataSnapshot) iterator.next()).getValue();
            inventory_FROM = (String) ((DataSnapshot) iterator.next()).getValue();
            inventory_FROM_ID = (String) ((DataSnapshot) iterator.next()).getValue();
            inventory_TO = (String) ((DataSnapshot) iterator.next()).getValue();
            inventory_TimeStamp = (String) ((DataSnapshot) iterator.next()).getValue();
            inventory_Type = (String) ((DataSnapshot) iterator.next()).getValue();
            Random_ID = (String) ((DataSnapshot) iterator.next()).getValue();
            inventory_FCM_FROM = (String) ((DataSnapshot) iterator.next()).getValue();
            inventory_FCM_TO = (String) ((DataSnapshot) iterator.next()).getValue();
    
    
            // return count of RANDOM ID  in room
            int hasValue = inventoryRoomDatabase.getInstance(getActivity(), 1).inventoryDAO().CheckValueExist(Random_ID);
            Log.d(TAG, "Has inventory " + hasValue);
    
            if (hasValue == 0) {
                inventoryEntity_TableColums inventoryEntity_tableColums;
                if (inventory_Type.equals("1")) {
                    inventoryEntity_tableColums = new inventoryEntity_TableColums(Session.getUserID(),inventory_Msg,  "1");
                    message.add(inventoryEntity_tableColums);
                   
    
                } else if (inventory_Type.equals("2")) {
                    inventoryEntity_tableColums = new inventoryEntity_TableColums(Session.getUserID(),inventory_Msg, "2");
                    message.add(inventoryEntity_tableColums);
                   
    
                } else if (inventory_Type.equals("3")) {
                    inventoryEntity_tableColums = new inventoryEntity_TableColums(Session.getUserID(),inventory_Msg, "3");
                    message.add(inventoryEntity_tableColums);
                    
                } else if (inventory_Type.equals("4")) { //THIS IS FOR SEARCHED IMAGES NOT FOR GIF IMAGES
                    inventoryEntity_tableColums = new inventoryEntity_TableColums( Session.getUserID(),inventory_Msg,"4");
                    message.add(inventoryEntity_tableColums);
    
                   
                } else if (inventory_Type.equals("5")) {
                    //Adding inventory Data Into Database
                    inventoryEntity_tableColums = new inventoryEntity_TableColums( Session.getUserID(),inventory_Msg,"5");
                    message.add(inventoryEntity_tableColums);
    
                   
                } else if (inventory_Type.equals("6")) {
                    //Adding inventory Data Into Database
                    inventoryEntity_tableColums = new inventoryEntity_TableColums( Session.getUserID(),inventory_Msg,"6");
                    message.add(inventoryEntity_tableColums);
    
                  
                } else if (inventory_Type.equals("7")) {
                    //Adding inventory Data Into Database
                    inventoryEntity_tableColums = new inventoryEntity_TableColums(Session.getUserID(),inventory_Msg,"7");
                    message.add(inventoryEntity_tableColums);
                   
                } else if (inventory_Type.equals("8")) {
                    //Adding inventory Data Into Database
                    inventoryEntity_tableColums = new inventoryEntity_TableColums( Session.getUserID(),inventory_Msg,"8");
                    message.add(inventoryEntity_tableColums);
    
                 
    
                } else if (inventory_Type.equals("9")) {
                    //Adding inventory Data Into Database
                    inventoryEntity_tableColums = new inventoryEntity_TableColums(Session.getUserID(),inventory_Msg,"9");
                    message.add(inventoryEntity_tableColums);
    
                    
                } else if (inventory_Type.equals("10")) {
                    //Adding inventory Data Into Database
                    inventoryEntity_tableColums = new inventoryEntity_TableColums( Session.getUserID(),inventory_Msg,"10");
                    message.add(inventoryEntity_tableColums);
                  
                } else if (inventory_Type.equals("11")) {
                    //Adding inventory Data Into Database
                    inventoryEntity_tableColums = new inventoryEntity_TableColums( Session.getUserID(),inventory_Msg,"11");
                    message.add(inventoryEntity_tableColums);
    
                  
                } else if (inventory_Type.equals("12")) {
                    inventoryEntity_tableColums = new inventoryEntity_TableColums( Session.getUserID(),inventory_Msg,"12");
                    message.add(inventoryEntity_tableColums);
                    Log.d(TAG, "Message Type Message" + inventory_Msg);
    
                 
                } else if (inventory_Type.equals("13")) {
                    inventoryEntity_tableColums = new inventoryEntity_TableColums( Session.getUserID(),inventory_Msg,"13");
                    message.add(inventoryEntity_tableColums);
    
                    
    
                }
    
            }
    
        }
        new Thread(new Runnable() {
            @Override
            public void run() {
//THIS LINE WHERE I AM GETTING java.util.concurrentmodificationexception at java.util.arraylist$itr.next at insertInventory
                inventoryRoomDatabase.getInstance(inventoryScreen.this.getActivity(), 1).inventoryDAO().Insertinventory(message);
            }
        }).start();
    }

房间数据库的 InsertInventroy

@Insert(onConflict = OnConflictStrategy.IGNORE)
    void Insertinventory(List<InventoryEntity_TableColums> inv);

【问题讨论】:

  • 您的方法“insertInventory”看起来如何?
  • @Nemanja 请检查更新的问题

标签: java android loops iterator


【解决方案1】:

我假设在insertinventory 方法中,您使用迭代器来迭代列表,并且您希望将新元素添加到列表中。问题是您不能对修改后的列表使用相同的迭代器。

【讨论】:

  • 这只是一个房间数据库插入条目。不使用相同的迭代器,我还发布了Insert 查询,以查看该方法是否会导致问题
  • @Ritu 也许这会有所帮助stackoverflow.com/questions/50737280/…
  • 感谢您的帮助,但我已经尝试过您发布的链接。
猜你喜欢
  • 2019-12-26
  • 2020-09-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-08
  • 2012-11-28
相关资源
最近更新 更多