Android ConcurrentModificationException在recyclerView中显示聊天时

Android ConcurrentModificationException在recyclerView中显示聊天时,android,firebase,exception,Android,Firebase,Exception,我通过firebase以片段的形式显示聊天,但它给出了ConcurrentModificationException错误 下面是发生错误的代码 代码: public void readChats(){ mUsers=newarraylist(); reference=FirebaseDatabase.getInstance().getReference(“用户”); addValueEventListener(新的ValueEventListener(){ @凌驾 public void on

我通过firebase以片段的形式显示聊天,但它给出了ConcurrentModificationException错误

下面是发生错误的代码

代码:

public void readChats(){
mUsers=newarraylist();
reference=FirebaseDatabase.getInstance().getReference(“用户”);
addValueEventListener(新的ValueEventListener(){
@凌驾
public void onDataChange(@NonNull DataSnapshot DataSnapshot){
mUsers.clear();
对于(DataSnapshot快照:DataSnapshot.getChildren()){
User=snapshots.getValue(User.class);
for(字符串id:usersList){
if(user.getID().equals(id)){
如果(mUsers.size()!=0){
for(用户1:mUsers){
如果(!user.getID().equals(user1.getID())){
添加(用户);
}
}
}否则{
添加(用户);
}
}
}
}
userAdapter=新适配器(getContext(),mUsers);
recyclerView.setAdapter(userAdapter);
}

如果通过迭代器(如for(var:Collection)循环)在集合上循环,则不能在循环过程中更改该集合。这样做是ConcurrentModification,并使迭代器无效


此外,您的代码将被中断。如果MUSER中的最后一个项不是UsR1,即使允许同时修改也将是无限循环。

它不能出现在光标所在的地方。如果您在某个时间点考虑使用该行,可以在这里找到一个教程,说明如何创建一个完整的函数。奥纳尔。
public void readChats() {
    mUsers = new ArrayList<>();
    reference = FirebaseDatabase.getInstance().getReference("Users");
    reference.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
            mUsers.clear();
            for (DataSnapshot snapshots: dataSnapshot.getChildren()) {
                User user = snapshots.getValue(User.class);
                for (String id :usersList) {
                    if (user.getID().equals(id)) {
                        if (mUsers.size()!=0) {
                            for (User user1 : mUsers) {
                                if (!user.getID().equals(user1.getID())) {
                                    mUsers.add(user);
                                }
                            }
                        } else {
                            mUsers.add(user);
                        }
                    }
                }
            }
            userAdapter = new adapter(getContext(), mUsers);
            recyclerView.setAdapter(userAdapter);
        }