从firebase示例中,我需要找出是否有任何年龄= 25的恐龙,可以按照以下方式完成。但是如果没有那个年龄的恐龙,我怎么能发现查询已经完成并且有0只年龄= 25的恐龙。因为我的Android UI依赖于此,继续下一步。
Firebase ref = new Firebase("https://dinosaur-facts.firebaseio.com/dinosaurs");
Query queryRef = ref.orderByChild("height").equalTo(25);
queryRef.addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot snapshot, String previousChild) {
System.out.println(snapshot.getKey());
}
// ....
});
修改 提供的一些解决方案建议使用ValueEventListener。但问题是即使你使用valueEventListener,在上面的例子中,它仍然不起作用,因为有0行。 onDataChange不会触发。
Firebase ref = new Firebase("https://dinosaur-facts.firebaseio.com/dinosaurs");
Query queryRef = ref.orderByChild("height").equalTo(25);
queryRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChanged(DataSnapshot snapshot) {
System.out.println(snapshot.getKey());
}
// ....
});
ANSWER
@Override
public void onDataChange(DataSnapshot snapshot) {
//DinosaurFacts facts = snapshot.getValue(DinosaurFacts.class);
//Log.d("hz-dino", facts.toString());
if(snapshot.getValue() != null)
{
Log.d("hz-dino", snapshot.getKey());
Log.d("hz-dino", String.valueOf(snapshot.getValue()));
}
else
{
Log.d("hz-dino", "there are exactly 0 rows!");
}
}
答案 0 :(得分:5)
测试数据:
snapshot.getValue() != null
使用时
ref.addValueEventListener
如果该位置不存在数据,则快照将返回null。