Моя структура данных
Мой объект имеет несколько ArrayLists и примитивов.При извлечении я получаю эту ошибку Expected a List при десериализации, но получил класс java.util.HashMap.
Я понимаю, что получаю эту ошибку, потому что именно так Firebase хранит ее.Я просто никогда не работал с этими полями.
Мой вопрос: могу ли я преобразовать его в мой объект напрямую?malhobayyeb указал это здесь https://stackoverflow.com/a/35979715/9860553, что кажется довольно близким к моему случаю, но предложенный им ответ не работает
Я тоже прикрепляю свою структуру Objects.
Хотя я думаюкод не нужен.Проблема заключается просто «в базе данных, как обрабатывать данные, если список находится внутри другого объекта»
package com.example.desktop.digitlbc.Model;
import java.util.ArrayList;
public class BusinessData {
private String
tvbAbout,
tvbProduct,tvbNews,tvbTrends,tvbOffers,
tvbEvents,
tvbCarrers;
private ArrayList<ImageData> idAlImageDataGallery;
private ArrayList<ImageData> idAlImageDataDocGallery;
private ArrayList<ImageData> idAlImageDataPersGallery;
private ArrayList<ImageData> idAlImageDataBizGallery;
private ArrayList<ImageData> idAlProduct;
private ArrayList<ImageData> idAlNews;
private ArrayList<ImageData> idAlTrends;
private ArrayList<ImageData> idAlOffers;
private String id;
private long timestamp;
private ArrayList<Product> product;
public BusinessData() {
}
public BusinessData(String tvbAbout, String tvbProduct, String tvbNews, String tvbTrends, String tvbOffers, String tvbEvents, String tvbCarrers, ArrayList<ImageData> idAlImageDataGallery, ArrayList<ImageData> idAlImageDataDocGallery, ArrayList<ImageData> idAlImageDataPersGallery, ArrayList<ImageData> idAlImageDataBizGallery, ArrayList<ImageData> idAlProduct, ArrayList<ImageData> idAlNews, ArrayList<ImageData> idAlTrends, ArrayList<ImageData> idAlOffers, String id, long timestamp, ArrayList<Product> product) {
this.tvbAbout = tvbAbout;
this.tvbProduct = tvbProduct;
this.tvbNews = tvbNews;
this.tvbTrends = tvbTrends;
this.tvbOffers = tvbOffers;
this.tvbEvents = tvbEvents;
this.tvbCarrers = tvbCarrers;
this.idAlImageDataGallery = idAlImageDataGallery;
this.idAlImageDataDocGallery = idAlImageDataDocGallery;
this.idAlImageDataPersGallery = idAlImageDataPersGallery;
this.idAlImageDataBizGallery = idAlImageDataBizGallery;
this.idAlProduct = idAlProduct;
this.idAlNews = idAlNews;
this.idAlTrends = idAlTrends;
this.idAlOffers = idAlOffers;
this.id = id;
this.timestamp = timestamp;
this.product = product;
}
public ArrayList<Product> getProduct() {
return product;
}
public void setProduct(ArrayList<Product> product) {
this.product = product;
}
public String getTvbAbout() {
return tvbAbout;
}
public void setTvbAbout(String tvbAbout) {
this.tvbAbout = tvbAbout;
}
public String getTvbProduct() {
return tvbProduct;
}
public void setTvbProduct(String tvbProduct) {
this.tvbProduct = tvbProduct;
}
public String getTvbNews() {
return tvbNews;
}
public void setTvbNews(String tvbNews) {
this.tvbNews = tvbNews;
}
public String getTvbTrends() {
return tvbTrends;
}
public void setTvbTrends(String tvbTrends) {
this.tvbTrends = tvbTrends;
}
public String getTvbOffers() {
return tvbOffers;
}
public void setTvbOffers(String tvbOffers) {
this.tvbOffers = tvbOffers;
}
public String getTvbEvents() {
return tvbEvents;
}
public void setTvbEvents(String tvbEvents) {
this.tvbEvents = tvbEvents;
}
public String getTvbCarrers() {
return tvbCarrers;
}
public void setTvbCarrers(String tvbCarrers) {
this.tvbCarrers = tvbCarrers;
}
public ArrayList<ImageData> getIdAlImageDataGallery() {
return idAlImageDataGallery;
}
public void setIdAlImageDataGallery(ArrayList<ImageData> idAlImageDataGallery) {
this.idAlImageDataGallery = idAlImageDataGallery;
}
public ArrayList<ImageData> getIdAlImageDataDocGallery() {
return idAlImageDataDocGallery;
}
public void setIdAlImageDataDocGallery(ArrayList<ImageData> idAlImageDataDocGallery) {
this.idAlImageDataDocGallery = idAlImageDataDocGallery;
}
public ArrayList<ImageData> getIdAlImageDataPersGallery() {
return idAlImageDataPersGallery;
}
public void setIdAlImageDataPersGallery(ArrayList<ImageData> idAlImageDataPersGallery) {
this.idAlImageDataPersGallery = idAlImageDataPersGallery;
}
public ArrayList<ImageData> getIdAlImageDataBizGallery() {
return idAlImageDataBizGallery;
}
public void setIdAlImageDataBizGallery(ArrayList<ImageData> idAlImageDataBizGallery) {
this.idAlImageDataBizGallery = idAlImageDataBizGallery;
}
public ArrayList<ImageData> getIdAlProduct() {
return idAlProduct;
}
public void setIdAlProduct(ArrayList<ImageData> idAlProduct) {
this.idAlProduct = idAlProduct;
}
public ArrayList<ImageData> getIdAlNews() {
return idAlNews;
}
public void setIdAlNews(ArrayList<ImageData> idAlNews) {
this.idAlNews = idAlNews;
}
public ArrayList<ImageData> getIdAlTrends() {
return idAlTrends;
}
public void setIdAlTrends(ArrayList<ImageData> idAlTrends) {
this.idAlTrends = idAlTrends;
}
public ArrayList<ImageData> getIdAlOffers() {
return idAlOffers;
}
public void setIdAlOffers(ArrayList<ImageData> idAlOffers) {
this.idAlOffers = idAlOffers;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public long getTimestamp() {
return timestamp;
}
public void setTimestamp(long timestamp) {
this.timestamp = timestamp;
}
}
Редактировать 1
Код теперь изменился.Я достиг того, что хотел НА СЕЙЧАС очень пещерным способом, используя ответ в ссылке выше.Но это оставляет код бесполезным для будущих обновлений.
Мой оригинальный код был простым значениемEventListener.ничего особенного на самом деле.вообще ничего.
businessData = dataSnapshot.getValue(BusinessData.class);
ссылка также указывает на правильное местоположение
mRef = database.getReference(Common.id).child("bizData");