2017-11-08 16 views
1

firebaseページネーションに問題があります。Firebaseデータベースを使用してページネーションが動作しません

私はテーブルの投稿があり、これは例の構造である:

enter image description here

と私は唯一の10ポストたびに取得したい、ここにある私のコードページは0である:

@NonNull 
    @CheckResult 
    public Single<DataSnapshot> getData(@NonNull DatabaseReference ref, int page) { 
     return Single.create(emitter -> { 

      ref.orderByChild("timestamp") 
        .startAt(page * 10) 
        .limitToFirst(10); 


      final ValueEventListener listener = new ValueEventListener() { 
       @Override 
       public void onDataChange(DataSnapshot dataSnapshot) { 
        if (!emitter.isDisposed()) { 
         emitter.onSuccess(dataSnapshot); 
        } 
       } 

       @Override 
       public void onCancelled(DatabaseError databaseError) { 
        if (!emitter.isDisposed()) { 
         emitter.onError(databaseError.toException()); 
        } 
       } 
      }; 

      ref.addListenerForSingleValueEvent(listener); 
     }); 
    } 

結果は次のとおりです

enter image description here なぜリストサイズは20ではなく10ですか? p.s.最初または制限するには限界が、それはDatabaseReferenceリターンにstartAt()limitToFirst()と同様の方法新しいQueryオブジェクトを呼び出すと、結果

+0

は2人のユーザーがいる場合があります。また、ユーザ数をユーザごとの投稿数ではなく、10に制限しています –

答えて

1

とは違いません最後まで。 Queryへの参照を保持し、リスナーを添付する必要があります。

Query query = ref.orderByChild("timestamp") 
       .startAt(page * 10) 
       .limitToFirst(10); 
query.addListenerForSingleValueEvent(listener); 
+0

ありがとうございました!!!!できます! –

関連する問題