RealmResults<T>
直接使用する場合、Realm でページネーションを使用する理由はありません。これは、 の要素RealmResults
が遅延評価され、 を呼び出すまでメモリにないためです.get(i)
。
つまり、直接インデックスを作成するまで、クエリは要素を実行および評価しません。つまり、それらは記憶にありません。リストには実際に要素が含まれRealmResults<T>
ているわけではなく、それらを見つける方法を知っているだけです。
そのためLIMIT
、レルムにはありません。
RealmResults
私の記憶が正しければ、によって返されない2 つを再評価すると、順序が異なる可能性があることに注意してくださいfindAllSorted
(削除が発生した場合)。順序が何があっても同じでなければならない場合は、rank
プロパティを検討し、順序をfindAllSorted("rank", Sort.ASCENDING)
.
本当にページネーションが必要な場合は、ランク パラメータが必要です。次に、次のようなクエリを作成できます。
realm.where(SomeClass.class)
.greaterThanOrEqualTo("rank", pageSize*pageIndex + 0)
.lessThan(SomeClassFields.RANK, pageSize*pageIndex + pageSize)
.findAllSorted(SomeClassFields.RANK, Sort.ASCENDING);
また、ここRealmRecyclerViewAdapter
から代わりに使用することを検討する必要があります。
compile 'io.realm:android-adapters:1.3.0' // for Realm 0.89.0 to Realm 2.3.0
また
compile 'io.realm:android-adapters:2.1.0' // for Realm 3.0.0+
また
compile 'io.realm:android-adapters:3.0.0' // for Realm 5.0.0+
「RealmRecyclerViewAdapter
新しいデータのロード」を処理します。初期値を設定する以外に何もする必要はありませんRealmResults
。
ページング アーキテクチャ コンポーネントと適切に統合されたら、実際にこの回答を変更する必要があります。私はここでそれを試してみました。それがうまくいくかどうかを確認できます.