2017-11-07 9 views
-1

私はFirebaseデータを以下のフォーマットで整理しています。下のコードを使用してデータを取得しようとしているとき、そのパスにFirebaseのデータがあるにもかかわらず、入力されたデータは決してonDataChangeではありません。ファイアベースクエリで結果セットが指定されていません

つまり、私はFirebaseの正しい道を見ることができる午前ログに、リスト部分を無視してください:

会話/ 8masp4NLZrYL4HpziIU7uUZjRd73/8masp4NLZrYL4HpziIU7uUZjRd73

Snapshot of firebase

DatabaseReference databaseReferenceAdapter = FirebaseDatabase.getInstance().getReference(); 
DatabaseReference conversation2Ref = databaseReferenceAdapter.child("conversation").child(currentUser).child(userListRef.get(position)); 

Log.d(TAG,"Data binding++++" + conversation2Ref.getRef().toString()); 

conversation2Ref.addValueEventListener(new ValueEventListener() { 
    @Override 
    public void onDataChange(DataSnapshot dataSnapshot) { 
     Log.d(TAG,"Data changed"); 
     Conversation conversationInfo = dataSnapshot.getValue(Conversation.class); 
     mConversationList.add(position,conversationInfo); 
     Log.d(TAG,"Data changed"); 
    } 

    @Override 
    public void onCancelled(DatabaseError databaseError) { 

     Log.d(TAG,"Data error"); 
    } 
}); 
+1

あなたの質問にJSONツリーの画像が含まれています。実際のJSONをテキストとして置き換えてください。このテキストは[Firebaseデータベースコンソール](https://console.firebase.google.com/project/_/database/data/)の[Export JSON]リンクをクリックすることで簡単に取得できます。 。 JSONをテキストとして検索可能にすることで、実際のデータを使ってテストしたり、答えに使用したりすることができます。一般的には、これは良いことです。 –

+0

問題は、currentUserまたはuserListRefまたは位置または会話クラスのいずれかです。 UserListRefとConversationクラスにも値を追加するコードを入力してください。現在のユーザーまたは位置の値はどこに保持していますか?他人があなたをより良く助けることができるように、必要最小限のコードを提供してください。また、logcatクラッシュレポートも提供してください。 –

答えて

0

これらの値を取得するには、代わりにConversation.cassを使用して、あなたはこのようにString.classを使用することができます。

DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference(); 
DatabaseReference yourRef = rootRef.child("conversation").child("8masp4NLZrYL4HpziIU7uUZjRd73").child("8masp4NLZrYL4HpziIU7uUZjRd73"); 
ValueEventListener eventListener = new ValueEventListener() { 
    @Override 
    public void onDataChange(DataSnapshot dataSnapshot) { 
     String message = dataSnapshot.child("message").getValue(String.class); 
     long notificationCount = dataSnapshot.child("notificationCount").getValue(Long.class); 
     long profileId = dataSnapshot.child("profileId").getValue(String.class); 
     String profileName = dataSnapshot.child("profileName").getValue(String.class); 
     long time = dataSnapshot.child("time").getValue(String.class); 
     String type = dataSnapshot.child("type").getValue(String.class); 
     Log.d("TAG", message); 
    } 

    @Override 
    public void onCancelled(DatabaseError databaseError) {} 
}; 
yourRef.addListenerForSingleValueEvent(eventListener); 
0
child(userListRef.get(position)); 

上記はwあなたはランダムにpush()useridの下のキーを持っているデータベースによると、ロング。したがって、プッシュキーを取得して子に追加する必要があります。キー取得する

:クエリで、その後

String key=conversation2Ref.push().getKey() 

は行います

child(key) 
関連する問題