2017-10-18 3 views
0

Wie werden Daten von Firebase in der Textansicht angezeigt? Wenn der Benutzer den Termin festlegt und auf Bestätigen klickt, sendet er eine Benachrichtigung, dann sollte die Benachrichtigung mein Datum und die Uhrzeit aus der Datenbank anzeigen, aber es ist ein Fehler aufgetreten.Fehler "Fehler beim Konvertieren des Werts vom Typ java.util.HashMap in String" beim Lesen von Firebase

Notification Page XML

myRef.child("Appointment").addValueEventListener(new ValueEventListener() { 
     @Override 
     public void onDataChange(DataSnapshot dataSnapshot) { 
      TextView mDate = (TextView) findViewById(R.id.tvdate); 
      // TextView mTime = (TextView) findViewById(R.id.tvtime); 
      for(DataSnapshot ds : dataSnapshot.getChildren()) 
      Log.d("TAG",ds.child("Date").getValue(String.class)); 
     } 

     @Override 
     public void onCancelled(DatabaseError error) { 
      Log.w(TAG, "Failed to read value.", error.toException()); 
     } 
    }); 
} 

Antwort

0

Sie haben eine Ebene in Ihrem JSON unter /Appointment (der Schlüssel beginnend mit n9nRQn). Ihr Code muss mit dieser Ebene umgehen.

One way:

myRef.child("Appointment").addValueEventListener(new ValueEventListener() { 
    @Override 
    public void onDataChange(DataSnapshot dataSnapshot) { 
     for (DataSnapshot childSnapshot: dataSnapshot.getChildren()) { 
     mDate.setText(childSnapshot.getValue(String.class)); 
     mTime.setText(childSnapshot.getValue(String.class)); 
     } 
    } 

    @Override 
    public void onCancelled(DatabaseError error) { 
     Log.w(TAG, "Failed to read value.", error.toException()); 
    } 
    }); 
} 
+0

Der Fehler ist immer noch der gleiche – Bleach

0

Um dies zu lösen, verwenden Sie bitte den folgenden Code:

myRef.child("Appointment").addValueEventListener(new ValueEventListener() { 
    @Override 
    public void onDataChange(DataSnapshot dataSnapshot) { 
     TextView mDate = (TextView) findViewById(R.id.tvdate); 
     TextView mTime = (TextView) findViewById(R.id.tvtime); 

     for (DataSnapshot ds : dataSnapshot.getChildren()) { 
      mDate.setText(ds.child("Date").getValue(String.class)); 
      mTime.setText(ds.child("Time").getValue(String.class)); 
     } 
    } 

    @Override 
    public void onCancelled(DatabaseError error) { 
     Log.w(TAG, "Failed to read value.", error.toException()); 
    } 
}); 

Dies geschah, weil Sie ein Kind in Ihrem DatabaseReference fehlten.

0

Sie können stattdessen ein Objekt verwenden, das Ihr Datum und Ihre Uhrzeit enthält. Für zB: -

// A new comment has been added, add it to the displayed list 

     Comment comment = dataSnapshot.getValue(Comment.class); 

https://firebase.google.com/docs/database/android/lists-of-data

Es wird einfach und leicht sein, die Daten von Feuerbasis zu erhalten.

Verwandte Themen