Я хочу получить только первые 10 или, возможно, n строк в памяти в виде списка Java, используя метод copyFromRealm. Рассмотрим так:
RealmResults<RecentViewItem> results = realm.where(RecentViewItem.class).findAllSorted("updatedAt", Sort.DESCENDING);
// This will load all rows in-memory list
List<RecentViewItem> list = realm.copyFromRealm(results);
// But I want only first n rows without running any loop.
ОБНОВЛЕНИЕ: поскольку RealmResult расширяет AbstractList —
RealmResults<RecentViewItem> results =
realm.where(RecentViewItem.class)
.findAllSorted("updatedAt", Sort.DESCENDING);
List<RecentViewItem> temp = results.subList(0, maxNoRecentViewItem); // Still list of RealmProxyObject
List<RecentViewItem> list = realm.copyFromRealm(temp); // List of RecentViewItem Object
copyFromRealm()
. Единственный раз, когда это имеет смысл при правильном использовании Realm, — это когда вы хотите отправить управляемый объект через что-то, что напрямую зависит от чтения полей — в основном, если вы отправляете объект как@Body
с дооснащением, используяGsonAdapterFactory
. В противном случаеcopyFromRealm()
обычно является неправильным использованием Realm API. - person EpicPandaForce   schedule 27.12.2016