为了账号安全,请及时绑定邮箱和手机立即绑定

Android Java ListView 从 Firebase 数据库检索列表但显示空的

Android Java ListView 从 Firebase 数据库检索列表但显示空的

摇曳的蔷薇 2021-10-20 14:34:16
我有一个 argent 问题我可以从 Firebase 实时数据库创建列表视图项但它的内容是空视图所有文本视图和图像都没有数据我确实遵循了本教程:https : //www.youtube.com/watch?v=jEmq1B1gveM&list=PLk7v1Z2rk4hj6SDHf_YybDeVhUT9MXaj1&index=2我确实很喜欢它,但是视频教程显示了一个工作列表,而我的列表是空视图,这是我的代码:专辑.java:package com.emadzedan.michealjacksonnoads.michealjacksonnoads;public class Album{private String thumbAndID;private String albumName;private String numberOfSongs;private String albumYear;public Album() {}public Album(String thumbAndID, String albumName, String numberOfSongs, String albumYear) {    this.thumbAndID = thumbAndID;    this.albumName = albumName;    this.numberOfSongs = numberOfSongs;    this.albumYear = albumYear;}public String getThumbAndID() {    return thumbAndID;}public void setThumbAndID(String thumbAndID) {    this.thumbAndID = thumbAndID;}public String getAlbumName() {    return albumName;}public void setAlbumName(String albumName) {    this.albumName = albumName;}public String getNumberOfSongs() {    return numberOfSongs;}public void setNumberOfSongs(String numberOfSongs) {    this.numberOfSongs = numberOfSongs;}public String getAlbumYear() {    return albumYear;}public void setAlbumYear(String albumYear) {    this.albumYear = albumYear;}}
查看完整描述

2 回答

?
跃然一笑

TA贡献1826条经验 获得超6个赞

您代码中的问题在于您的Album类中的字段名称与数据库中的属性名称不同。您的Album班级中有一个名为的字段,thumbAndID但在您的数据库中,我认为id它是不正确的。名称必须匹配。有两种方法可以解决这个问题。


第一个是删除当前数据并使用正确的名称再次添加它。所以你的字段 id 应该thumbAndID在数据库中也有相同的名称。此解决方案仅在您处于测试阶段时才有效。


在我看来,第二种方法更优雅,是使用annotations. 因为我看到您正在使用私有字段和公共 getter,所以您应该只在 getter 前面使用PropertyName注释。所以你的Album类应该是这样的:


public class Album{

    private String thumbAndID;

    private String albumName;

    private String numberOfSongs;

    private String albumYear;


    public Album() {}


    public Album(String thumbAndID, String albumName, String numberOfSongs, String albumYear) {

        this.thumbAndID = thumbAndID;

        this.albumName = albumName;

        this.numberOfSongs = numberOfSongs;

        this.albumYear = albumYear;

    }


    @PropertyName("id")

    public String getThumbAndID() {

        return thumbAndID;

    }


    public void setThumbAndID(String thumbAndID) {

        this.thumbAndID = thumbAndID;

    }


    @PropertyName("name")

    public String getAlbumName() {

        return albumName;

    }


    public void setAlbumName(String albumName) {

        this.albumName = albumName;

    }


    @PropertyName("numberofsongs")

    public String getNumberOfSongs() {

        return numberOfSongs;

    }


    public void setNumberOfSongs(String numberOfSongs) {

        this.numberOfSongs = numberOfSongs;

    }


    @PropertyName("year")

    public String getAlbumYear() {

        return albumYear;

    }


    public void setAlbumYear(String albumYear) {

        this.albumYear = albumYear;

    }

}

如果您打算使用此解决方案,则无需在数据库中更改任何其他内容。


查看完整回答
反对 回复 2021-10-20
?
陪伴而非守候

TA贡献1757条经验 获得超8个赞

您的构造函数参数名称应与您的 Firebase db 键匹配。像这样修改您的相册类构造函数。


public Album(String id, String name, String numberofsongs, String year) {

    this.thumbAndID = id;

    this.albumName = name;

    this.numberOfSongs = numberofsongs;

    this.albumYear = year;

}


查看完整回答
反对 回复 2021-10-20
  • 2 回答
  • 0 关注
  • 120 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信