【发布时间】:2016-03-18 17:44:26
【问题描述】:
我有一个名为 TodoList 的领域对象,它具有像这样的 RealmList 属性。
@PrimaryKey
private int id;
private String title;
private RealmList<Task> tasks;
我这里是任务领域对象
@PrimaryKey
private int id;
private String title;
private boolean completed;
private TodoList todoList;
我的问题是编写 Realm 查询以返回属于特定 TodoList 的任务列表的最佳方法是什么。这是我的方法。
public RealmResults<Task> getTodoListTasks(int todoListId) {
RealmResults<Task> tasks = mRealm.where(Task.class)
.equalTo("todoList.id", todoListId).findAll();
return tasks;
}
这种方法要求我查询任务表以查找与给定 id 匹配的所有 TodoList 外键。我正在寻找这样的东西:
public RealmResults<Task> getTodoListTasks2(TodoList list) {
TodoList todoList = mRealm.where(TodoList.class).equalTo("id", list.getId()).findFirst();
RealmResults<Task> tasks = todoList.getTasks();
return tasks;
}
但是这不会构建,因为我无法将 RealmList 转换为 RealmResult。
【问题讨论】:
-
第二种方法是我的做法——为什么需要
RealmResults?为什么不能直接返回RealmList? -
感谢 Adam,我需要 RealmResults 用于 RealmRecyclerViewAdapter
-
使用反向链接会容易得多,但不幸的是它还没有实现,请参阅github.com/realm/realm-java/issues/607。这两种方法都很好。您实际上可以通过
realmList.where().findAll()将RealmList转换为RealmResults。最近将添加另一个更好的抽象对象以更好地支持此用例,请参阅github.com/realm/realm-java/pull/2345。 -
哇,感谢@beeender 的更新。如果您想将您的评论推广到一个答案,我很乐意接受它,RealmList 到 RealmResult 的转换正是我想要的。