2016-12-15 6 views
1

Я пытаюсь создать приложение для Android, в котором я использую Firebase для хранения списка информации. Я могу хранить информацию в базе данных реального времени без проблем, но проблема, с которой я в настоящее время сталкиваюсь, заключается в попытке выяснить, как получить список при добавлении нового контента.Извлечение списка из Firebase

Когда я добавляю, изменяю или удаляю значения в списке, ни один из childEventListener s не вызывается.

FirebaseDatabase database; 
DatabaseReference toDatabase; 

... 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_world_play_hide); 

     hideAvatar = (Button) findViewById(R.id.hideAvatar); 

     database = FirebaseDatabase.getInstance(); 
     toDatabase = database.getReference("jsierra"); 

     ... 

     hideAvatar.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 

       ... 

       getCurrentLocation(); 
       currentCoordinates = new LatLng(latitude, longitude); 
       data store = new data(currentCoordinates); 

       toDatabase.push().setValue(store); 

       map.addMarker(new MarkerOptions().position(currentCoordinates)); 
      } 
     }); 
    } 

protected void onStart() { 
     apiClient.connect(); 
     super.onStart(); 

     DatabaseReference test = toDatabase.child("jsierra"); 

     test.addChildEventListener(new ChildEventListener() { 

      @Override 
      public void onChildAdded(DataSnapshot dataSnapshot, String s) { 
       Toast.makeText(getBaseContext(), "Child Added", Toast.LENGTH_LONG).show(); 
       givenData = dataSnapshot.getValue(data.class); 
      } 

      @Override 
      public void onChildChanged(DataSnapshot dataSnapshot, String s) { 
       givenData = dataSnapshot.getValue(data.class); 
       Toast.makeText(getBaseContext(), "Child Changed", Toast.LENGTH_LONG).show(); 
      } 

      @Override 
      public void onChildRemoved(DataSnapshot dataSnapshot) { 
       givenData = dataSnapshot.getValue(data.class); 
       Toast.makeText(getBaseContext(), "Child Removed", Toast.LENGTH_LONG).show(); 
      } 

      @Override 
      public void onChildMoved(DataSnapshot dataSnapshot, String s) { 
       givenData = dataSnapshot.getValue(data.class); 
       Toast.makeText(getBaseContext(), "Child Moved", Toast.LENGTH_LONG).show(); 
      } 

      @Override 
      public void onCancelled(DatabaseError databaseError) { 
       Toast.makeText(getBaseContext(), "Failed", Toast.LENGTH_LONG).show(); 
      } 
     }); 
    } 

ответ

1

test ссылка неверна. Изменение:

DatabaseReference test = toDatabase.child("jsierra"); 

к:

DatabaseReference test = database.getReference("jsierra"); 
+0

Я изменил его и получил ошибку "не может решить метод ребенка". Я посмотрел на FirebaseDatabase API, и ребенок не является его частью. Я попробовал getReference, и это сработало! Спасибо за помощь! –

+0

@JuanSierra: Вы правы. Я починил это. –

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