【问题标题】:Why doesn't RealmList related to a RealmObject updated?为什么与 RealmObject 相关的 RealmList 没有更新?
【发布时间】:2019-11-11 17:50:13
【问题描述】:

我有一些具有这种结构的领域数据:

public class Member extends RealmObject {

@PrimaryKey
private int id;
private String name;
private String image_url;
}

public class Department extends RealmObject {

@PrimaryKey
private int id;
// some another fields...
private RealmList<Member> members;
}

public class Meeting extends RealmObject {

@PrimaryKey
private int id;
private String title = "";
private RealmList<Member> members = new RealmList<>();
}

我想从部门中选择一些成员并添加到选定的会议中。

//properties
int departmentId = 1;
int meetingId = 4;
Meeting meeting;
Department department;
Realm realm;

//declaration
realm = Realm.getDefaultInstance();
realm.beginTransaction();
meeting = realm.where(Meeting.class).equalTo("id", meetingId).findFirst();

department = realm.where(Department.class).equalTo("id", departmentId).findFirst();

//add members
for (Member member : department.getMembers()) {
    if (!thereIsInList(member,meeting.getMembers()))
        meeting.getMembers().add(member);
}

//realm update and close
realm.insertOrUpdate(meeting);
realm.commitTransaction();
realm.close();

下一个java代码:

public boolean thereIsInList(Member member, List<Member> mList) {
    if (mList == null) return false;
    for (Member m : mList) {
        if (m.getId() == member.getId()) return true;
    }
    return false;
}

但我看到新成员与会议无关。 请帮我找出问题所在?

【问题讨论】:

    标签: java android realm realm-list


    【解决方案1】:

    首先在领域工作室中检查您要查找的 id 是否正确,并且您需要的列表存在于与相应 id 相关的领域中。下面 sn-p 处理真正的事务

        Realm realmObj;
    
        //declaration
        realmObj= Realm.getDefaultInstance();
    
    realmObj.executeTransaction(realm -> {
        meeting = realm.where(Meeting.class).equalTo("id", meetingId).findFirst();
    
        department = realm.where(Department.class).equalTo("id", departmentId).findFirst();
    
        //add members
        for (Member member : department.getMembers()) {
            if (!thereIsInList(member,meeting.getMembers()))
                meeting.getMembers().add(member);
        }
    
      });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多