[英]Realm for Android: Many to Many Relationship
我正在嘗試通過實現一個簡單的Android項目來學習Realm基礎知識。 這個想法是,用戶有幾個項目和幾個項目列表,並且一個項目可以添加到這些列表中的任何一個中,並且一個列表可以有很多項目。 因此, Item
和List
對象之間存在多對多關系。 這是我的對象。
public class Item extends RealmObject {
@PrimaryKey
private String id;
private String name;
private boolean isDone;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public boolean isDone() {
return isDone;
}
public void setDone(boolean done) {
isCollected = done;
}
}
public class List extends RealmObject {
@PrimaryKey
private String id;
private String name;
private RealmList<Item> items;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public RealmList<Item> getItems() {
return items;
}
public void setItems(RealmList<Item> items) {
this.items = items;
}
}
我的問題是,取決於給定列表中項目的狀態,字段isDone
可能會有所不同。 但是,當我更新列表中的該字段時,添加到不同列表中的所有其他項目也將更新。 由於他們使用的是同一個對象,這很有意義,但這與我想要的行為無關。 有一種Realm方法可以創建具有額外列/字段(在這種情況下為isDone
)的數據透視表/對象嗎?
任何幫助,將不勝感激。
問題在於Item
的isDone
屬性並不真正屬於Item
。 如果可以在多個列表中設置相同的項,則在給定列表中將給定任務視為已完成的屬性就是該列表的屬性。
public class Item extends RealmObject {
@PrimaryKey
private String id;
private String name;
//private boolean isDone;
@LinkingObjects("completedItems")
private final RealmResults<List> tasksCompletedIn = null;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
//public boolean isDone() {
// return isDone;
//}
//public void setDone(boolean done) {
// isDone = done;
//}
}
public class List extends RealmObject {
@PrimaryKey
private String id;
private String name;
private RealmList<Item> items;
private RealmList<Item> completedItems;
然后,如果completedItems.contains(item)
(其中item
是托管對象,或者重寫equals
以僅檢查id
),您就知道它是否是完成的項目
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.