如何将RealmResults<Model>转换为ArrayList<Model>?

问题描述 投票:0回答:4

当我使用realm.where(Model.class)时,它返回RealmResults并且列表项的字段为空。如何将查询集转换为可读的ArrayList或迭代RealmResults以从数据库中的对象获取实际数据?

java realm realm-list
4个回答
18
投票

Realm 中的所有提取都是惰性的,并且数据永远不会被复制。所以如果你想从RealmResults获取当前数据,你必须调用realm.copyFromRealm(results)。

public List<Model> getModelList() {
    List<Model> list = new ArrayList<>();
    Realm realm;
    try {
        realm = Realm.getDefaultInstance();
        RealmResults<Model> results = realm
                .where(Model.class)
                .findAll();
        list.addAll(realm.copyFromRealm(results));
    } finally {
        if (realm != null) {
            realm.close();
        }
    }
    return list;
}

2
投票

RealmResults 实现了 Iterable 接口,因此您可以使用以下方式进行迭代:

for (E e : realmResults) {
    // Do stuff
}

如果这不能回答问题,请精确说明并添加代码示例。


0
投票

我的应用程序中使用的 kotlin 版本:

/**
 * convert RealmResults<Model> to ArrayList<Model>
 *
 * @param realm realm
 * @param results RealmResults<Model> to convert
 * @return resultsList List<Model> converted
*/
fun getResultsList(
    realm: Realm,
    results: RealmResults<Model>?
): MutableList<Model> {
    val resultsList: MutableList<Model> = ArrayList()
    resultsList.addAll(realm.copyFromRealm(results!!))
    return resultsList
}

-1
投票
Realm realm = Realm.getDefaultInstance();
        realm.where(Object.class)
                .findAllAsync()
                .addChangeListener(list -> {
                   List<Object> listObjects = realm.copyFromRealm(list);
                });
© www.soinside.com 2019 - 2024. All rights reserved.