2016-09-11 4 views
0

これは私がfirebaseのデータベースのガイドが表示されたら、それは常にデータにアクセスするために指定された場所を必要とfirebaseアンドロイド - サブディレクトリにアクセスするFirebaseデータベース

{ 
    "Rooms" : { 
    "room1" : { 
     "Header" : { 
     "Recipient" : "JZrMZeE6JXYULHRtDbksfagnQE53", 
     "Sender" : "fD0E2IbeGub53n1muYSYX88N6US2" 
     }, 
     "Message" : { 
     "MESSAGE-QWEASD" : { 
      "Message" : "Hello World", 
      "Name" : "fD0E2IbeGub53n1muYSYX88N6US2" 
     } 
     } 
    } 
    } 
} 

の私のデータベースです。ただし、メインディレクトリ(Rooms)のサブディレクトリ(room1)には、その名前を示すことなくアクセスしたいと考えています。今のところ、部屋の名前の中のデータにアクセスするための名前を示す必要があります。

dataSnapshot.child("Rooms").child("room1").getValue().toString() 

サブディレクトリの名前

+0

は、それが特定のノードのすべての子を反復処理しますか? – Sunshinator

+0

getChildren()を使うことができますが、 "Rooms"ノードの直下の子をすべてリストします。 – RamithDR

+0

はい、ちょうどコードが見つかりました:dataSnapshot.child( "Rooms")。getChildren()。iterator()。next()。getKey()。toString() – MyNameIsAsker

答えて

0

の文字列を返すメソッドは、あなたが部屋にアクセスしたい場合は、部屋には上記のあなたのノードのようなオブジェクトを作成する必要があります。 しかし、あなたはroom1、room2、room3を持っていると思います。あなたの構造はそのようにする必要があります(Object Roomとして簡単に解析できるオブジェクトルームの配列リスト)。キーは変更されません。

{ 
    "Rooms" : [ 
    { 
    "name" : "room1", 
    { 
     "Header" : { 
     "Recipient" : "JZrMZeE6JXYULHRtDbksfagnQE53", 
     "Sender" : "fD0E2IbeGub53n1muYSYX88N6US2" 
     }, 
     "Message" : { 
     "MESSAGE-QWEASD" : { 
      "Message" : "Hello World", 
      "Name" : "fD0E2IbeGub53n1muYSYX88N6US2" 
     } 
     } 
    } 
    } 
    { 
     "name" : "room2", 
     .... 
    } 
    ] 
} 

class Room { 
    String name; 
    Header Header; 
    Message Message; 
} 

class Header { 
    String Recipient; 
    String Sender; 
} 

メッセージと同様のを行いますが、私はそれが唯一のオブジェクトとして簡単にそれを作るために、メッセージと名前を持って、MESSAGE-QWEASDを削除するために、容易にする必要があると思います。

そして最後に

List<Room> rooms = (List<Room>)dataSnapshot.child("Rooms").getValue(); 
+0

それは私が望んでいたものではありませんが、君は – MyNameIsAsker

関連する問題