我想查询来自firebase的数据。 但我遇到了一些问题。 这是我的火力基础数据 click me show the picture
Firebase myFirebaseRef = new Firebase("http//.....");
Query queryRef= myFirebaseRef.child("0912345678").orderByChild("coffeeNo").equalTo("002");
queryRef.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot snapshot) {
// do some stuff once
if (snapshot.getValue() == null) {
txtMyCoffee.setText("No data");
}
else{
for (DataSnapshot dataSnapshot : snapshot.getChildren())
{
Coffee userCoffee = dataSnapshot.getValue(Coffee.class);
date = userCoffee.getDate();
txtMyCoffee.setText(date+" Success!");
}
}
} @Override
public void onCancelled(FirebaseError firebaseError) {
}
});
但是当我运行此代码时,txtMyCoffee的文本将显示我"没有数据"。 如何解决这个问题? 谢谢大家!
答案 0 :(得分:0)
您正在使用的查询类型将要求您对子项进行迭代(可以返回多个结果)....所以只需在onDataChanged
中包含以下内容
for (DataSnapshot dataSnapshot : snapshot.getChildren())
{
Coffee userCoffee = dataSnapshot.getValue(Coffee.class);
date = userCoffee.getDate();
txtMyCoffee.setText(date+" Success!");
}
答案 1 :(得分:0)
请使用此代码:
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference coffeeNoRef = rootRef.child("myCoffee").child("0912345678").child("20170627");
ValueEventListener eventListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
String coffeeNo = dataSnapshot.child("coffeeNo").getValue(String.class);
Log.d("TAG", coffeeNo);
}
@Override
public void onCancelled(DatabaseError databaseError) {}
};
coffeeNoRef.addListenerForSingleValueEvent(eventListener);
出局将是:
003
肯定会工作。