Realm.io Android从表中获取最后20个项目的最佳方法

前端之家收集整理的这篇文章主要介绍了Realm.io Android从表中获取最后20个项目的最佳方法前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在一个表中说100项,这是获得最后20个对象的最佳方法.

我能想到的一种方法是加载所有对象,反转数组,创建一个新数组并从结果循环20次,填充新数组并返回它.

如下所示:

public ArrayList<DataObject> getLastItems (int qty){

    RealmResults<DataObject>results = realm.where(DataObject.class).findAll();

    Collections.reverse(results);

    ArrayList<DataObject>arrayList = new ArrayList<>();

    for (int i = 0; i == qty; i++){

        arrayList.add(results.get(i));

    }

    return arrayList;
}

有没有更好的方法在Android中使用realm.io做到这一点?

更新

到目前为止这是如何处理的..

public ArrayList<DataObject> getLastItems (int qty){

    RealmResults<DataObject>results = realm.where(DataObject.class).findAll();
    ArrayList<DataObject> arrayList = new ArrayList<>();
    for (int i = results.size(); i > Math.max(results.size() - 20,0) ; i--) {
        arrayList.add(results.get(i-1));
    }

    return arrayList;
}

解决方法

另请注意,Realm表是无序的.将它们视为放置数据的包.这意味着如果您想要插入最后20个项目,则需要添加一个字段以包含插入时间.这样做还可以让您非常有效地实现您想要的结果:
RealmResults<DataObject>results =
    realm.where(DataObject.class)
         .findAllSorted("timestamp",RealmResults.SORT_ORDER_DESCENDING);

for (int i = 0; i < 20; i++) {
    // do magic here
}

猜你在找的Android相关文章