这是我的测试结果:
我不会使用上面的字段,它只是一个假人。但我想通过"用户"并为每封电子邮件返回:
System.out.println(emailString);
我找到列出对象的唯一方法是使用firebaseAdapter,还有另一种方法吗?
答案 0 :(得分:34)
最简单的方法是使用ValueEventListener。
FirebaseDatabase.getInstance().getReference().child("users")
.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot snapshot : dataSnapshot.getChildren()) {
User user = snapshot.getValue(User.class);
System.out.println(user.email);
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
答案 1 :(得分:4)
FirebaseDatabase database = FirebaseDatabase.getInstance();
DatabaseReference myRef = database.getReference();
myRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for(DataSnapshot item_snapshot:dataSnapshot.getChildren()) {
Log.d("item id ",item_snapshot.child("item_id").getValue().toString());
Log.d("item desc",item_snapshot.child("item_desc").getValue().toString());
}
}
}
答案 2 :(得分:3)
假设您有对用户节点的引用,您可以按如下方式遍历节点:
reference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for(DataSnapshot child : dataSnapshot.getChildren() ){
// Do magic here
}
}
@Override
public void onCancelled(FirebaseError firebaseError) {}
});
请注意,for循环中的DataSnapshot child
将UID作为键,而不是用户。
答案 3 :(得分:1)
使用Iterator遍历dataSnapshot
public void onDataChange(DataSnapshot snapshot) {
Iterator<DataSnapshot> items = snapshot.getChildren().iterator();
int counter = 0;
while (items.hasNext()) {
DataSnapshot item = items.next();
Log.i("Result", "email" + item.child("email").getValue().toString());
Log.i("Result", "User ID" + item.child("userId").getValue().toString());
Log.i("Result", "User Name" + item.child("username").getValue().toString());
}
}
迭代器将遍历用户的所有子元素,并使用items.next()来访问用户子对象的子对象
答案 4 :(得分:0)
我知道我回答得太晚了,但我必须
FirebaseDatabase.getInstance().getReference().child("users")
.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot snapshot : dataSnapshot.getChildren()) {
String user = snapshot.child("email").getValue().toString();
System.out.println(user);
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
此程序将打印所有用户电子邮件
我期待输出
my@email.com
jonathanwells@email.com
freddyreich@email.com