我有从Realm
收到的RealmResults,如
RealmResults<StepEntry> stepEntryResults = realm.where(StepEntry.class).findAll();
现在我希望将RealmResults<StepEntry>
转换为ArrayList<StepEntry>
我试过
ArrayList<StepEntry> stepEntryArray = new ArrayList<StepEntry>(stepEntryResults));
但我的ArrayList
中的项目不是我的StepEntry
对象,而是StepEntryRealmProxy
我该如何转换它? 任何帮助或建议都将非常感激。
答案 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)