Android领域迭代器异常

Android领域迭代器异常,android,iterator,realm,Android,Iterator,Realm,Android领域,我想这样编码: public void updateChecked(MyModel model) { Realm.getDefaultInstance().beginTransaction(); model.setChecked(true); Realm.getDefaultInstance().commitTransaction(); } public void updateAllChecked() { RealmResults<My

Android领域,我想这样编码:

public void updateChecked(MyModel model) {
    Realm.getDefaultInstance().beginTransaction();
    model.setChecked(true);
    Realm.getDefaultInstance().commitTransaction();
}

public void updateAllChecked() {
    RealmResults<MyModel> results = Realm.getDefaultInstance().where(MyModel.class).findAll();
    for (MyModel model : results) {
        updateChecked(model);
    }
}

如何解决它?

在迭代过程中不能更改对象。您需要首先手动将所有对象复制到另一个列表,然后对它们进行迭代

List List=new ArrayList();
list.addAll(结果);
realm.beginTransaction();
用于(MyModel MyModel:列表){
myModel.setChecked(true);
}
realm.commitTransaction();

使用一个好的旧for循环

for (int i = 0; i < results.size(); i++) {
   MyModel model = results.get(i);
   updateChecked(model);
}
 for (int i = 0; i < results.size(); i++) {
        updateChecked( results.get(i))
    }
realm.beginTransaction();
RealmResults<MyModel> results = realm.where(MyModel.class).equalTo("checked", false).findAll();
for(int i = results.size()-1; i >= 0; i--) {
    MyModel myModel = results.get(i);
    myModel.setChecked(true);
}
realm.commitTransaction();
for(int i=0;i
由于某些原因,此操作不能在foreach循环内执行,相反,您可以使用普通For循环

for (int i = 0; i < results.size(); i++) {
   MyModel model = results.get(i);
   updateChecked(model);
}
 for (int i = 0; i < results.size(); i++) {
        updateChecked( results.get(i))
    }
realm.beginTransaction();
RealmResults<MyModel> results = realm.where(MyModel.class).equalTo("checked", false).findAll();
for(int i = results.size()-1; i >= 0; i--) {
    MyModel myModel = results.get(i);
    myModel.setChecked(true);
}
realm.commitTransaction();
for(int i=0;i
0.89.0中的更改允许这种情况发生,但以前的规范解决方案是使用普通for循环进行反向迭代

for (int i = 0; i < results.size(); i++) {
   MyModel model = results.get(i);
   updateChecked(model);
}
 for (int i = 0; i < results.size(); i++) {
        updateChecked( results.get(i))
    }
realm.beginTransaction();
RealmResults<MyModel> results = realm.where(MyModel.class).equalTo("checked", false).findAll();
for(int i = results.size()-1; i >= 0; i--) {
    MyModel myModel = results.get(i);
    myModel.setChecked(true);
}
realm.commitTransaction();
realm.beginTransaction();
RealmResults results=realm.where(MyModel.class).equalTo(“选中”,false).findAll();
对于(int i=results.size()-1;i>=0;i--){
MyModel MyModel=results.get(i);
myModel.setChecked(true);
}
realm.commitTransaction();

在哪里使用列表?类别,类别从何而来?