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;
}
}
如果您打算使用此解決方案,則無需在數據庫中更改任何其他內容。

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;
}
添加回答
舉報