android - 如何从 Firebase 检索数据和特定用户数据

标签 android firebase firebase-realtime-database

我在从 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 数据库快照

enter image description here

最佳答案

    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/

相关文章:

android - 从子节点跳转到 Firebase 父节点

javascript - 更改 Firebase 中元素的路径

node.js - Node.js 中的 Firebase Admin SDK 全局应用初始化

android - RecyclerView 的行正在洗牌并更改图像 : android

java - 网络回调onAvailable方法中接口(interface)空指针异常

java.lang.RuntimeException : Unable to start activity

firebase - 如何使用 Java 中的 FCM 将带有自定义图像的推送通知发送到 Web 应用程序

android - 仅在 Android 和 Blackberry 中使用 Facebook 身份验证?

javascript - 如何通过 Javascript 更新 Firebase 元素?

android - Firebase Android 计数 child /徽章