Search code examples
androidrealminsert-update

How to update RealmObject inside RealmObject properties?


Message extends RealmObject{
Attachment attachment;
}

Attachment extends RealmObject{
int state;
}

I want to update state inside Attachment. I followed a path like this:

RealmResults<Message> allMessages = mRealm.where(Message.class)
                .isNotNull("attachment")
                .in("attachment.state", new Integer[]{INTERRUPTED,PENDING})
                .findAll();

if (allMessages != null && allMessages.size() > 0) {
    for (Message message : allMessages) {
        Attachment attachment = message.getAttachment();
        attachment.setState(IDLE);
    }
}

Is there a way to update state via direct Attachment?


Solution

  • Um.

    try(Realm r = Realm.getDefaultInstance()) {
        r.executeTransaction((realm) -> {
            RealmResults<Attachment> attachments = realm.where(Attachment.class)
               .in("state", new Integer[]{INTERRUPTED,PENDING})
               .findAll();
            for(Attachment attachment: attachments) {
                attachment.setState(IDLE);
            }
        });
    }