簡體   English   中英

Android領域:多對多關系

[英]Realm for Android: Many to Many Relationship

我正在嘗試通過實現一個簡單的Android項目來學習Realm基礎知識。 這個想法是,用戶有幾個項目和幾個項目列表,並且一個項目可以添加到這些列表中的任何一個中,並且一個列表可以有很多項目。 因此, ItemList對象之間存在多對多關系。 這是我的對象。

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 )的數據透視表/對象嗎?

任何幫助,將不勝感激。

問題在於ItemisDone屬性並不真正屬於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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM