2016-07-25 3 views
0

У меня есть Firebase базу данных, которая выглядит следующим образом:Android Firebase GETKEY() возвращение ребенка вместо

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()); 
    } 
    } 

Проблема заключается в том, этот запрос Безразлично 't работает, потому что dataSnapshot.getKey() возвращает «child1» вместо ID. Он делает то же самое для dataSnapshot.getRef().getKey(). Если я использую dataSnapshot.getRef().getParent().getKey(), я получаю «чат». Как мне вернуть ключ для DataSnapshot? Сейчас я очень смущен.

+0

Не могли бы вы опубликовать скриншот из консоли базы данных с указанием некоторых данных в этом формате? –

+0

Похоже, я напортачил на этот вопрос. Оказывается, проблема в том, что позже в «ValueEventListener» я добавлял еще одного слушателя и случайно использовал 'this' вместо' MyClass.this'. Извините. – Nick

+0

ум, добавляющий автоответчик, объясняющий вашу ошибку, а затем обозначение его как принятое, чтобы этот вопрос был закрыт? –

ответ

0

Оказалось, что проблема не в вышеуказанном коде. Далее в ValueEventListener я сделал еще один запрос и случайно установил слушателя в this вместо MyClass.this. ValueEventListener в this искал что-то еще, поэтому запрос был несовместим.

Смежные вопросы