2017-10-04 22 views
0

この図に示すように、値のリスナーをすべての子の最後のノードに向ける方法がわかりませんでした。すべての子の最後のノードにFirebaseの子イベントリスナー

img

私はchildeventリスナーを使用する必要がありますが、私はそれを正しくリダイレ​​クトする方法がわからないと思います。

Query searchItemQuery = userDatabaseReference.child(user.getUid()); 
searchItemQuery.addChildEventListener(new ChildEventListener(){ 
    @Override 
    public onChildAdded, onChildChanged, onChildRemoved, onChildMoved, onCancelled 
}); 

答えて

0

私の代わりにfirebaseプッシュIDを使用しての、あなたがunix timestamp in millisを保存することができ、各item0001item0002のためにそれをダウンを示唆しています。そうすれば、項目を簡単に並べ替えて各項目の最後の子ノードを取得することができます。

だから、これはあなたのデータベースを変更して、単純にコードの下に使用して

は今、各項目について、あなたは最後の子を指すことができ... SO ON

root 
    user 
    uid 
     item0001 
     15089344450000 // this is a timestamp 
      itemdepositdate 
      itemwithdrawdate 

     15989922000000 // another timestamp 
      itemdepositdate 
      itemwithdrawdate 

    item0002 

などになります。

+0

@ugubozは、ファイヤーベースのプッシュキーはタイムスタンプに基づいて既に時系列であると述べているため、データベースを変更せずにコードを直接実行することができます。ただし、時間がある場合は、データベースを変更することをお勧めします。これは、キーを知っているのでアイテムを伝えるのがはるかに簡単になるためです。 –

+0

ありがとう、それは期待どおりに動作し、私はchildeventlistenerの代わりにvalueeventlistenerを使用してあなたの答えに従って、ありがとうございます –

+0

問題はありませんサー!どういたしまして :) –

0
Query searchItemQuery = userDatabaseReference 
       .child(user.getUid) 
       .orderByKey() //order nodes w.r.t. the keys 
       .limitToLast(1); //gets last item 
+0

これは、item10001の子ノードのみを取得するか、item10001、item10002などの子ノードを取得しますか? –

+0

申し訳ありませんが、私はそれがループ内になければならないという点を忘れていました。しかし、主なアイデアは、最後のノードを取得することですn最後のアイテムを取得するためにlimitToLast(n)を使用することです。コードを適用してitem1000xノードをすべて反復し、それぞれの最後の項目をフェッチすることができます。 – uguboz

+0

firebaseによって生成されたランダムなプッシュIDのorderByKey()はどのように動作しますか? –

関連する問題