如何在文本视图中显示来自firebase的数据?当用户进行预约并单击确认后,将发送通知,然后通知应显示我的数据库日期和时间,但它有错误。
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());
}
});
}
答案 0 :(得分:0)
您的JSON中的级别位于/Appointment
下(以n9nRQn
开头的密钥)。您的代码需要处理此级别。
一种方式:
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());
}
});
}
答案 1 :(得分:0)
要解决此问题,请使用以下代码:
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());
}
});
发生这种情况是因为您错过了DatabaseReference
中的孩子。
答案 2 :(得分:0)
您可以使用对象来保存您的日期和时间。 例如: -
// 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
从firebase获取数据非常简单。