2016-12-15 6 views
1

私はFirebaseを使って情報のリストを保存しているAndroidアプリケーションを作成しようとしています。私は問題なくリアルタイムのデータベースに情報を保存することができますが、私が現在持っている問題は、新しいコンテンツが追加されたときにリストを取り出す方法を見つけようとしていることです。Firebaseからのリストの取得

リスト内の値を追加、変更、または削除すると、childEventListenerのいずれも呼び出されません。

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:そうです。それを私が直した。 –

関連する問題