Как получить массив объектов из базы данных Firebase Realtime - PullRequest
0 голосов
/ 13 января 2020

В моей базе данных в реальном времени есть json:

{
  "stickers": {
    "StickerPack0": {
      "Sticker0": {
        "image": "https://imgur.com/SKz7cOw.png"
      },
      "Sticker1": {
        "image": "https://imgur.com/SKz7cOw.png"
      },
      "Sticker2": {
        "image": "https://imgur.com/SKz7cOw.png"
      },
      "Sticker3": {
        "image": "https://imgur.com/SKz7cOw.png"
      },
      "Sticker4": {
        "image": "https://imgur.com/SKz7cOw.png"
      },
      "price": 0.99,
      "title": "Happy Hamster"
    }
  }
}

Как видите, есть price, title и массив из 5 объектов (Sticker0, * 1007). *, ...).

Чтобы разобрать его, я создал следующую сущность:

data class StickerPack(
    var title: String? = null,
    var price: Double? = null,
    var stickers: List<String>? = null
)

Вот как я ее анализирую:

query = database.child("stickers")
        query.addListenerForSingleValueEvent(object : ValueEventListener {

            override fun onCancelled(error: DatabaseError) {
                Timber.e(error.toException())
                view?.onStickerListFailed()
            }

            override fun onDataChange(snapshot: DataSnapshot) {
                if (snapshot.exists()) {
                    val stickersFirebase = snapshot.children

                    stickersFirebase.forEach { data ->
                        val sticker = data.getValue(StickerPack::class.java)
                        stickers.add(sticker!!)
                    }

                    view?.onStickerListLoaded(stickers)
                }
            }
        })

Но в В этой ситуации я могу получить только такие поля, как title и price и не могу понять, как я могу преобразовать Sticker объекты в массив строк. Итак, как мне найти решение этой проблемы? Я буду признателен за любую помощь. Заранее спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...