обрабатывать объект, содержащий несколько списков и других примитивов (ожидал список при десериализации, но получил класс java.util.HashMap) - PullRequest
0 голосов
/ 19 октября 2018

Моя структура данных enter image description here

Мой объект имеет несколько 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");
...