我正在将Firebase用于Android项目,并且在将数据推送到服务器时效果很好,但在检索数据时,我什么都没得到。
这是我的firebase的结构
这是我从Firebase检索数据的代码
mRef.child("User").addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
counter = dataSnapshot.getChildrenCount();
for (DataSnapshot postSnapshot : dataSnapshot.getChildren()) {
post = postSnapshot.getValue(SettersGetters.class);
nicuNames.add(post.getNicuName());
nicuAddresses.add(post.getNicuAddress());
niucCount.add(post.getNicuCount());
nicuPrices.add(post.getNicuCount());
nicuPhones.add(post.getNicuPhone());
nicuUpdate.add(post.getNicuUpdate());
nicuLat.add(post.getNicuLat());
nicuLng.add(post.getNicuLng());
nicuDes.add(post.getNicuDesc());
a++;
Toast.makeText(MapsActivity.this,"jhkjhk", Toast.LENGTH_LONG).show();
System.out.println(nicuNames.get(0));
}
//Toast.makeText(MapsActivity.this,"jhkjhk" + a, Toast.LENGTH_LONG).show();
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
在制作Toast以至少打印子项数时,每次都返回0
Toast.makeText(MapsActivity.this,a+"",Toast.LENGTH_SHORT).show();
答案 0 :(得分:1)
您希望收听User
键的子事件,而不是值事件。
替换
mRef.child("User").addValueEventListener(new ValueEventListener() {
用
mRef.child("User").addChildEventListener(new ChildEventListener() {
然后,实施
onChildAdded(DataSnapshot snapshot, String previousChildName)
onChildChanged(DataSnapshot snapshot, String previousChildName)
从那里开始,你将DataSnapshot
映射到一个(比SettersGetters.class
更好的命名类
答案 1 :(得分:0)
试试这个
if salary >= (average - 5000) and salary <= (average + 5000)