2016-07-25 19 views
0

を子供を返す:アンドロイドFirebaseのgetKey()私はこのようになりますFirebaseデータベースを持っている代わりに

appname: 
    chat: 
    [ID]: 
     child1:value 
     child2:value 

私はこのようにそれを照会しています:

DatabaseReference ref = rootReference.child("chat").child([ID]); 
ref.addListenerForSingleValueEvent(new ValueEventListener() { 
    @Override 
    public void onDataChange(DataSnapshot dataSnapshot) { 
    if (dataSnapshot.exists()) { 
     long index = Long.parseLong(dataSnapshot.getKey()); 
    } 
    } 

問題は、このクエリはdoesnの、ありますdataSnapshot.getKey()はIDの代わりに "child1"を返すため、作業しません。 dataSnapshot.getRef().getKey()の場合も同様です。 dataSnapshot.getRef().getParent().getKey()を使用した場合、私は "チャット"を取り戻します。 DataSnapshotのキーを返すにはどうすればよいですか?私は今非常に混乱しています。

+0

データベースコンソールからこの形式のデータを表示するスクリーンショットを投稿できますか? –

+0

私はこの質問に台無しのように見えます。問題は、 'ValueEventListener'の後半で別のリスナーを追加していて、' MyClass.this'の代わりに誤って 'this'を使用していたことです。申し訳ありません。 – Nick

+0

あなたの間違いを説明した自己回答を追加し、受け入れられたとマークしてこの質問を閉じますか? –

答えて

0

上記のコードに問題がなかったことが判明しました。さらにValueEventListenerに別のクエリを作成し、偶然にリスナをMyClass.thisではなくthisに設定しました。 ValueEventListenerthisが何か他のものを探していたため、クエリに互換性がありませんでした。

関連する問題