2016-10-09 5 views
0

Я создаю приложение, которое в основном представляет собой таблицу для футбола, которая обновляется каждый раз, когда я меняю ее в своей БД.Получение соответствующего ключа от ValueEventListener

Я использую Firebase таким образом:

enter image description here

Я пытаюсь использовать addValueEventListener, но я не знаю, какой один из значений является тот, который изменяет (МПИ, оценка, баллы ...), поэтому я не занимаюсь этим полем в своей таблице, которую я должен обновить.

public class table extends AppCompatActivity { 
Button insert; 
TextView name, games, win, lost, tie, score, dif, points; 
Team A; 
DatabaseReference mRootRef = FirebaseDatabase.getInstance().getReference(); 
DatabaseReference FootballRef = mRootRef.child("Football"); 
DatabaseReference HouseARef = FootballRef.child("HouseA"); 


protected void onStart() { 
    super.onStart(); 
    ValueEventListener postListener = new ValueEventListener() { 
     @Override 
     public void onDataChange(DataSnapshot dataSnapshot) { 
      // Get Post object and use the values to update the UI 
      String key = dataSnapshot.getKey() ; 
      Toast.makeText(table.this,key, Toast.LENGTH_SHORT).show(); 
      // ... 
     } 

     @Override 
     public void onCancelled(DatabaseError databaseError) { 
      // Getting Post failed, log a message 

      // ... 
     } 
    }; 
    HouseARef.addValueEventListener(postListener); 
} 
} 

Смотрите здесь, когда, скажем, я обновляю имя housaA, я хочу, чтобы вернуть ключ, который был обновлен (в моем случае, name), но когда я использую dataSnapshot.getKey() тоста Я возвращаюсь HouseA и не name.

+0

Вы включили изображение дерева JSON в вашем вопрос. Пожалуйста, замените это на фактический JSON как текст, который вы легко можете получить, нажав кнопку «Экспорт» в консоли базы данных Firebase. Наличие JSON в качестве текста делает его доступным для поиска, позволяет нам легко использовать его для тестирования с вашими фактическими данными и использовать его в нашем ответе, и в целом это просто хорошая вещь. –

ответ

0

Вы не сможете сделать это, используя valuelistener.

Вместо этого поставьте ребенка на дом.

Теперь внутри onChildChanged, вы должны получить дочерний узел под houseA, который изменил как datasnapshot и с этого снимка, вы можете получить ключ, который изменил

+0

вам придется разделить структуру дерева json, если вы хотите, чтобы этот ответ был точнее, чем это, хотя .... – Kushan

+0

спасибо, я использовал onChild, и это сработало :) –

+0

рад помочь :) – Kushan

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