2016-09-26 3 views
1

私はfirebaseに次の形式でJSONを持っています。アンドロイドFirebaseフィルタリングデータは

"products" : { 
    "-KS9-I-mz7k_4IqYMQdX" : { 
     "brand" : "champion", 
     "name" : "x2 style", 
     "users" : { 
     "oGNKfltdMsVAfjDN63QjjITGnhw1" : { 
      "-KSIpwMZxesepEdNN1CW" : { 
      "-KS9IQkdC0-lRYp0hzAN" : true 
      } 
     } 
     } 
    }, 
    "-KS9-IkweDZlNf_qbbrX" : { 
     "brand" : "champion", 
     "name" : "wtab 709 tab", 
     "users" : { 
     "NKfltdMsVAfjDN63QjjITGnjdjjj" : { 
     "-KSIpwMZxesepEdNN1CW" : { 
      "-KS9IQkdC0-lRYp0hzAN" : true 
      } 
     } 
     } 
    } 
} 

が、私はこのキーoGNKfltdMsVAfjDN63QjjITGnhw1を持つすべてのユーザーを取得する必要があります。私は、キー、値、および子供のフィルタリングを試みました。しかし、nothingsが動作します。

+0

何かを試したことがあるので、うまくいかなかったコードを共有できますか?少なくとも、それはあなたがどのような技術を使用しているかを示してくれますが、私たちが簡単に答えることもできます。 –

答えて

0

あなたのデータのスナップショットを反復処理の例についてはドキュメントを参照してください:ここで

myTopPostsQuery.addListenerForSingleValueEvent(new ValueEventListener() { 
    @Override 
    public void onDataChange(DataSnapshot dataSnapshot) { 
     for (DataSnapshot postSnapshot: dataSnapshot.getChildren()) { 
      // TODO: handle the post 
     } 
    } 

    @Override 
    public void onCancelled(DatabaseError databaseError) { 
     // Getting Post failed, log a message 
     Log.w(TAG, "loadPost:onCancelled", databaseError.toException()); 
     // ... 
    } 
}); 

は再びその一例であるが、今回は、私がよりよいのための解決策を説明するためにあなたのコードを使用しようとしましたあなた:

mDatabase.child("products").addListenerForSingleValueEvent(new ValueEventListener() { 
    @Override 
    public void onDataChange(DataSnapshot dataSnapshotLevel1) { 
     for(DataSnapshot dataSnapshotLevel2: dataSnapshotLevel1.getChildren()){ 
      for(DataSnapshot dataSnapshotLevel3: dataSnapshotLevel2.getChildren()){ 
       if(child.getKey().equals("users")){ 
        for(DataSnapshot deeperData: data.getChildren()){ 
         if(child.getKey().equals("oGNKfltdMsVAfjDN63QjjITGnhw1")){ 
          //Here is where you do whatever you need to do now that you found your child. 
         } 
        } 
       } 
      } 
     } 
    } 

    @Override 
    public void onCancelled(DatabaseError databaseError) { 
     Log.w(TAG, "getUser:onCancelled", databaseError.toException()); 
     // ... 
    } 
}); 
関連する問題