我在从firebase检索数据时遇到问题。我有一个root用户的节点,然后在该根目录中我有一个userID子节点。在该子节点内,我根据其血型存储用户信息。
现在,我想要的是根据血型获取姓名和电子邮件,说取出血型为B +的所有用户数据。
另外,请告诉我如何获取firebase中的所有条目并在textView上显示。
//show data on text view
datashow.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.i("inside click", "onClick: ");
FirebaseDatabase database = FirebaseDatabase.getInstance();
DatabaseReference db = database.getReference();
db.child("users").addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
User user = dataSnapshot.getValue(User.class);
if (user == null) {
Log.e(TAG, "User data is null!");
return;
}
Iterable<DataSnapshot > children = dataSnapshot.getChildren();
Log.i("children", "onDataChange: " + children);
for(DataSnapshot child : children)
{
Map<String , String> map = (Map)child.getValue();
Log.i("inside", "onDataChange: " + map);
name = map.get("name");
email = map.get("email");
dateof = map.get("userDob");
showData(name , email , dateof );
Log.i("datasnap", "onDataChange: data snapshot " + name + email + dateof);
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
});
这是我对Firebase数据库的快照
答案 0 :(得分:1)
db.child("users").orderByChild("userBloodGroup").equalTo("B+").addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot snapshot) {
List<User> data = new ArrayList<>();
if (dataSnapshot.exists()) {
for (DataSnapshot snapshot :
dataSnapshot.getChildren()) {
User element = snapshot.getValue(User.class);
element.setKey(snapshot.getKey());
data.add(element);
}
for (User user: data){
Log.i(TAG,"user name: " +user.getName());
Log.i(TAG,"user email: " +user.getEmail());
Log.i(TAG,"user dob: " +user.getUserDob());
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
Log.i(TAG, "loadPost:onCancelled", databaseError.toException());
}
});
答案 1 :(得分:0)
要使用 bloodGroup B +查询所有用户,请使用Firebase查询:
firebaseReference("users").orderByChild("userBloodGroup").equalTo("B+")
要获取用户的所有数据,您可以使用监听器获取所有这些数据并将它们放入您需要的任何TextView中。您可以查看Firebase上有关他们如何读取数据的文档。 https://firebase.google.com/docs/database/android/read-and-write