java - 通过搜索Firebase获取特定的节点

标签 java android firebase firebase-realtime-database arraylist

如何从Firebase获取特定节点并将其添加到ArrayList中?我使用Map键作为Firebase根节点名称来查找特定的节点。

我写的代码为:

DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference().child("Users");
        rootRef.addListenerForSingleValueEvent(new ValueEventListener() {
            public void onDataChange(DataSnapshot dataSnapshot) {
                for(Map.Entry<String, String> singleContact: contacts.entrySet()) {
                    if (dataSnapshot.hasChild(singleContact.getKey())) {
                        Log.i("app", "Present: " + singleContact.getKey());
                        userModelObjects.add(dataSnapshot.getValue(FirebaseUserModel.class)); // added into ArrayList of type FirebaseUserModel
                    }
                    else {
                        Log.i("app", "Absent: " + singleContact.getKey());
                        userModelObjects.add(dataSnapshot.getValue(FirebaseUserModel.class));
                    }
                }
            }

            public void onCancelled(DatabaseError databaseError) {
                Log.i("app","failed to connect: "+databaseError.getMessage());
            }
        });


代码给我一个警告


W / ClassMapper:在课堂上找不到12345的设置器/字段
com.demo.example.Firebase.FirebaseUserModel


我的FirebaseUserModel.java类

public class FirebaseUserModel {

    private String fname,lname,gender;
    private int isInstalled,day,month,year;

    public FirebaseUserModel() { }

    public FirebaseUserModel(String fname,String lname,String gender,int isInstalled,int day,int month,int year)
    {

        this.fname=fname;
        this.lname=lname;
        this.gender=gender;
        this.isInstalled=isInstalled;
        this.day=day;
        this.month=month;
        this.year=year;
    }
}


火力基地的结构

-Users
    -12345
                -fname:"abc"
                -lname:"xyz"
                -gender:"male"
                -isInstalled:1
                -day:1
                -month:2
                -year:1996


问题:我的Firebase节点未添加到ArrayList中。警告如上所示

最佳答案

如错误所示:


W / ClassMapper:在com.demo.example.Firebase.FirebaseUserModel类上找不到12345的setter /字段


您需要为实例变量添加getter和setter以便能够将对象与firebase结果进行映射

关于java - 通过搜索Firebase获取特定的节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61277896/

相关文章:

java - 如何从 HttpURLConnection 创建 ResponseEntity?

java - Android 弹出窗口与可变文本

android - ListView onClickListeners

ios - Firebase 动态链接无法在安装后继续存在

android - Android Firebase SDK 中的自动 ID?

java - 如何加载复合 Material 的一部分并保持其他部分静态?

java - Struts2 anchor 标记不包含 contextPath

javascript - angular.element() 找不到 DOM 元素

java - JNI C函数无法解析android串口Api

android.app.Application 中的 android classcastexception