我在从 firebase 检索数据时遇到问题。我有一个 root 用户的节点,然后在该 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 数据库快照
最佳答案
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());
}
});
关于android - 如何从 Firebase 检索数据和特定用户数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43061251/