2017-10-05 2 views
0

Ich wollte den Wert und die Zeit abrufen, aber ich kann nicht dorthin gelangen, es gibt mir den Wert als Null in den Protokollen. Ich habe mich gefragt, ob es notwendig ist, die unique_id zu bekommen, wenn ja wie kann ich das machen.Wie kann ich Daten aus einer solchen Datenbank abrufen?

Screenshot of Realtime Database

valueRef = myRef.child("user_id").child("ASSETS").child("cash at bank"); 

view.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View view) { 
     valueRef.addChildEventListener(new ChildEventListener() { 
      @Override 
      public void onChildAdded(DataSnapshot dataSnapshot, String s) { 
       for (DataSnapshot ds : dataSnapshot.getChildren()) { 
        Long value = ds.child("values").getValue(Long.class); 
        Log.d(TAG, "onChildAdded: the value is" + value); 
       } 
      } 

      @Override 
      public void onChildChanged(DataSnapshot dataSnapshot, String s) { 

      } 

      @Override 
      public void onChildRemoved(DataSnapshot dataSnapshot) { 

      } 

      @Override 
      public void onChildMoved(DataSnapshot dataSnapshot, String s) { 

      } 

      @Override 
      public void onCancelled(DatabaseError databaseError) { 

      } 
     }); 
    } 
}); 
+0

ich tat aber immer noch gibt es den Wert ist null –

+0

Ziemlich vage Frage, aber Ihr Kind Knoten ist falsch. Es sollte Bargeld bei der Bank, nicht bei der Bank sein (der tatsächliche Knotenname ist mit einem Großbuchstaben "C") – Jay

Antwort

1

ich denke, das wird der richtige Weg sein, um Ihr Problem zu lösen:

@Override 
public void onChildAdded(DataSnapshot dataSnapshot, String s) { 
    Long value = ds.child("values").getValue(Long.class); 
} 

In Ihrer Referenz suchen Sie bereits in das neue Kind mit der einzigartigen ID und seinem bekommenen DataSnapshot. Alles, was Sie tun müssen, ist, das Kind davon zu referenzieren, das values ist, und seinen Wert zu erhalten.

0

Tal Barder ist richtig mit his answer.

Zwar gibt es noch einen anderen Weg:

valueRef = myRef.child("user_id").child("ASSETS").child("cash at bank"); 

view.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      valueRef.addValueEventListener(new ValueEventListener() { 
       @Override 
       public void onDataChanged(DataSnapshot dataSnapshot, String s) { 
        for (DataSnapshot ds : dataSnapshot.getChildren()) { 
         Long value = ds.child("values").getValue(Long.class); 
         Log.d(TAG, "onChildAdded: the value is" + value); 
        } 
       } 

       ... 
     } 
    }); 

Diese noch Ihre Schleife verwendet, Ich habe gerade den Zuhörer in ValueEventListener, das wird wieder ein DataSnapshot alle Kinder enthalten.

Der in Tal's answer erwähnte sollte in den meisten Fällen der Ansatz sein.

Verwandte Themen