0

RecyclerViewのfirebaseデータベースからいくつかのレコードを取得しています。私はすでに特定のキー値に基づいてデータを取得しています。今私はデータがMM-dd-yyyyである日付キーのためにソートされることを望みます。どうすればソートできますか?それを取得するマイコード:firebaseデータベースの日付キーで配列結果を並べ替え

FirebaseRecyclerAdapter<Eventsdata,Eventshistory.Game> adapter=new FirebaseRecyclerAdapter<Eventsdata,Eventshistory.Game>(Eventsdata.class 
                           ,R.layout.eventshistoryrow 
                            ,Eventshistory.Game.class 
                            ,reference.child("Events").orderByChild("uid").equalTo(mAuth.getCurrentUser().getUid()) 
    ) 

Firebase Schema

私はここで、UIDに基づいてレコードを取得していますが、私はそれが日付のソートされたいです。

答えて

0

モデルを変更する必要があります。 yyyy-mm-ddを使用するか、UTCタイムスタンプを使用してください。 mm-dd-yyyyは、自然な並べ替えにはまったく役に立たない。

また、独自のリサイクラーアダプターを実装して、手動でデータを取得し、日付に従ってソートする必要があるようです。これは、firebaseがあなたのケースのuserIDである1つの子に対してのみクエリを許可するためです。 「useridはこのユーザーのIDで、日付でソートされた場所」のようなデータを得ることはできません。

0

私が正しくなったら、追加された時間に基づいてデータを取得しようとしています。あなたは(イベント)のデータを追加する方法では

考えられる解決策は、各イベントIDのタイムスタンプと呼ばれる新しい子にも追加することができます。

 //to get a time stamp you do this 

     ServerValue.TIMESTAMP 

ので、これは今、各イベントIDは、自身のタイムスタンプを持っているあなたは、データに

  //if you use Map to add data, do this 

      Map map=new HashMap(); 
      map.put("eventID", event_id); 
      map.put("gameFee", "200"); 
      //here you add timestamp 
      map.put("timestamp", ServerValue.TIMESTAMP); 
      .......... 
      ...... 

を追加する方法です。

タイムスタンプに従ってクエリを実行します。だからではなく、そのように照会の

  reference.child("Events").orderByChild("uid").equalTo(mAuth.getCurrentUser().getUid(); 

は、この操作を行います。

 reference.child("Events").orderByChild("timestamp"); 

をそして、あなたは公表され、彼らがどこに日付のデータ・ベースを検索します。

関連する問題