如何将RealmResults <object>转换为List <object>

时间:2016-11-23 07:57:55

标签: android realm

我有从Realm收到的RealmResults,如

RealmResults<StepEntry> stepEntryResults = realm.where(StepEntry.class).findAll();

现在我希望将RealmResults<StepEntry>转换为ArrayList<StepEntry>

我试过

 ArrayList<StepEntry> stepEntryArray = new ArrayList<StepEntry>(stepEntryResults));

但我的ArrayList中的项目不是我的StepEntry对象,而是StepEntryRealmProxy enter image description here

我该如何转换它? 任何帮助或建议都将非常感激。

3 个答案:

答案 0 :(得分:34)

要急切地读取Realm中的每个元素(并因此使列表中的所有元素都变得不受管理,你可以这样做):

 List<StepEntry> arrayListOfUnmanagedObjects = realm.copyFromRealm(realmResults);

但是你通常没有理由这样做,除非你想用GSON序列化对象(特别是因为它用反射而不是用getter读取字段数据),因为Realm的设计是以列表公开的方式更改侦听器,允许您通过观察对数据库所做的更改来保持UI的最新状态。

答案 1 :(得分:0)

@EpicPandaForce的答案效果很好。我尝试这种方式来优化我的应用程序性能,我发现以下更快一点。喜欢速度的人的另一种选择:

RealmResults<Tag> childList = realm.where(Tag.class).equalTo("parentID", id).findAll();
Tag[] childs = new Tag[childList.size()];
childList.toArray(childs);
return Arrays.asList(childs);

答案 2 :(得分:-1)

在Kotlin:

var list : List<Student>: listof()
val rl = realm.where(Student::class.java).findAll()

// subList return all data contain on RealmResults
list = rl.subList(0,rl.size)