Java 从firebase数据库向FirebaseRecyclerAdapter显示时出错

Java 从firebase数据库向FirebaseRecyclerAdapter显示时出错,java,android,firebase,firebase-realtime-database,firebaseui,Java,Android,Firebase,Firebase Realtime Database,Firebaseui,我正在尝试将Firebase数据库中的数据显示到RecylerView,我将遵循本教程 当我运行此活动时。我得到这个错误 com.google.firebase.database.DatabaseException:找到两个getter或 属性区分大小写冲突的字段:alamat 我的结构 如何解决这个问题?在您的数据库中,您有属性:alamat带小写字母。但是在model类中,字段Alamat是大写的,两者应该是相同的 更改模型类中的字段: public String alamat; pub

我正在尝试将Firebase数据库中的数据显示到RecylerView,我将遵循本教程

当我运行此活动时。我得到这个错误

com.google.firebase.database.DatabaseException:找到两个getter或 属性区分大小写冲突的字段:alamat

我的结构


如何解决这个问题?

在您的数据库中,您有属性:
alamat
带小写字母。但是在model类中,字段
Alamat
是大写的,两者应该是相同的

更改模型类中的字段:

public String alamat;

public String getAlamat() {
    return alamat;
}

public void setAlamat(String alamat) {
    this.alamat = alamat;
}

在数据库中,您有属性:
alamat
,小写。但是在model类中,字段
Alamat
是大写的,两者应该是相同的

更改模型类中的字段:

public String alamat;

public String getAlamat() {
    return alamat;
}

public void setAlamat(String alamat) {
    this.alamat = alamat;
}

您需要确保数据库中JSON的属性名与Java类的属性名完全匹配。现在,您的
BiodataModel
类有一个(JavaBean)属性
alamat
,而数据库包含一个(JSON)属性
alamat
。由于第一个字符的大小写不同,Firebase从数据库读取数据时无法在对象上找到匹配的属性

正如Peter所展示的,最简单的修复方法是在数据库和代码之间保持完全相同的大小写。另一种方法是使用JSON属性的正确拼写/大小写注释Java代码:

public class BiodataModel {

    public String Fullname,Email,NoTelp,Alamat;

    public BiodataModel() {

    }

    @PropertyName("Fullname")
    public String getFullname() {
        return Fullname;
    }

    @PropertyName("Email")
    public String getEmail() {
        return Email;
    }

    @PropertyName("NoTelp")
    public String getNoTelp() {
        return NoTelp;
    }

    @PropertyName("Alamat")
    public String getAlamat() {
        return Alamat;
    }

    @PropertyName("Fullname")
    public void setFullname(String Fullname) {
        this.Fullname = Fullname;
    }

    @PropertyName("Email")
    public void setEmail(String Email) {
        this.Email = Email;
    }

    @PropertyName("NoTelp")
    public void setNoTelp(String NoTelp) {
        this.NoTelp = NoTelp;
    }

    @PropertyName("Alamat")
    public void setAlamat(String Alamat) {
        this.Alamat = Alamat;
    }
}
顺便注意,getter和setter是可选的,在这里似乎没有添加太多内容。因为您的字段已经是公共的,所以您也可以使用更短的类:

public class BiodataModel {
    public String Fullname;
    public String Email;
    public String NoTelp;
    public String Alamat;
}
因为这里的字段名已经与JSON属性名精确匹配,所以不需要对它们进行注释。但是,如果这里有不匹配的情况,您可以只注释该字段以使其重新工作。例如:

public class BiodataModel {
    @PropertyName("FullName")
    public String Fullname;
    public String Email;
    public String NoTelp;
    public String Alamat;
}

您需要确保数据库中JSON的属性名与Java类的属性名完全匹配。现在,您的
BiodataModel
类有一个(JavaBean)属性
alamat
,而数据库包含一个(JSON)属性
alamat
。由于第一个字符的大小写不同,Firebase从数据库读取数据时无法在对象上找到匹配的属性

正如Peter所展示的,最简单的修复方法是在数据库和代码之间保持完全相同的大小写。另一种方法是使用JSON属性的正确拼写/大小写注释Java代码:

public class BiodataModel {

    public String Fullname,Email,NoTelp,Alamat;

    public BiodataModel() {

    }

    @PropertyName("Fullname")
    public String getFullname() {
        return Fullname;
    }

    @PropertyName("Email")
    public String getEmail() {
        return Email;
    }

    @PropertyName("NoTelp")
    public String getNoTelp() {
        return NoTelp;
    }

    @PropertyName("Alamat")
    public String getAlamat() {
        return Alamat;
    }

    @PropertyName("Fullname")
    public void setFullname(String Fullname) {
        this.Fullname = Fullname;
    }

    @PropertyName("Email")
    public void setEmail(String Email) {
        this.Email = Email;
    }

    @PropertyName("NoTelp")
    public void setNoTelp(String NoTelp) {
        this.NoTelp = NoTelp;
    }

    @PropertyName("Alamat")
    public void setAlamat(String Alamat) {
        this.Alamat = Alamat;
    }
}
顺便注意,getter和setter是可选的,在这里似乎没有添加太多内容。因为您的字段已经是公共的,所以您也可以使用更短的类:

public class BiodataModel {
    public String Fullname;
    public String Email;
    public String NoTelp;
    public String Alamat;
}
因为这里的字段名已经与JSON属性名精确匹配,所以不需要对它们进行注释。但是,如果这里有不匹配的情况,您可以只注释该字段以使其重新工作。例如:

public class BiodataModel {
    @PropertyName("FullName")
    public String Fullname;
    public String Email;
    public String NoTelp;
    public String Alamat;
}

请检查我的最新问题。我正在添加PictureEyes,您需要使用小写的alamat,所有其他字段也应该是小写的Hmm,您知道我在哪里有小写的alamat
?我对这个很陌生。很抱歉,您没有,但是您需要遵循javabean约定,并且必须使用小写字段。所以像firstName一样,alamat避免了这个错误。在这里也检查一下:请检查我更新的问题。我正在添加PictureEyes,您需要使用小写的alamat,所有其他字段也应该是小写的Hmm,您知道我在哪里有小写的alamat
?我对这个很陌生。很抱歉,您没有,但是您需要遵循javabean约定,并且必须使用小写字段。与firstName一样,alamat可避免此错误。请在此处检查: