2016-12-30 3 views
1

私はアンドロイドアプリでクエリを使用していますが、何か問題があります。私のデータベースには最終的に数百または数千のポーリングオブジェクトがあります。私は一度に約20点を取得したいと思います。20点を取得したら、次の20点を取得します。私は最初の20点を簡単に取得できますが、startAt()を使用しようとすると何も得られません。私はlastPollFromQueryためInteger positionを使用してみましたが、現在はString(ポーリングオブジェクトのキー)を使用していますAndroidのFirebaseのクエリStartAt()

pollQuery = rootRef.child(getString(R.string.poll_ref)).startAt(lastPollFromQuery).orderByChild(getString(R.string.timestamp_ref)).limitToFirst(numPollsToLoad); 

は、ここに私のコードです。私もstartAt()orderByChild()の周りをシャッフルしましたが、あまり効果はありませんでした。

私は間違っていますか?

答えて

4

タイムスタンプと最後のポーリングのキーの両方を渡す必要があります。最初のページから2ページ目に行くとしたら、ページ1の最後の投票のタイムスタンプとキーを知っている必要があります。

pollQuery = rootRef.child(getString(R.string.poll_ref)) 
    .orderByChild("timestamp") 
    .startAt(timestampFromLastPollOfPage1, keyFromLastPollOfPage1) 
    .limitToFirst(numPollsToLoad); 
+0

ありがとう!私はちょうどタイムスタンプとキーを使用して終了し、それは同じ動作します。 – Jared

+0

あなたのタイムスタンプがユニークである限り、それは確かに動作します。タイムスタンプの衝突の可能性が増し、キーを唯一の顕著な要素にしていることに注意してください。 –

関連する問題