FireBase DataSnapshot getValue не устанавливает свойства для тела инициализации - PullRequest
0 голосов
/ 31 января 2019

У меня есть datasnopshot, возвращенный из моей базы данных firebase, и я настроил его для анализа json с моим классом модели.

override fun onDataChange(snapshot: DataSnapshot) {


             if(snapshot.exists()){

                 newReleases.clear()
                 for(d in snapshot.children){
                     val media = d.getValue(PlayableMedia::class.java)
                     newReleases.add(media!!)
                 }

                 newReleasesAdapter!!.notifyDataSetChanged()

             }

         }

Теперь это работает, если я ничего не делаю во время инициализации.Моя проблема заключается в том, что когда я что-то делаю во время инициализации, мои свойства в классе модели пусты или для них установлено значение по умолчанию.Я прочитал от здесь о свойствах и все.Это мой модельный класс и его init тело.Я думаю, что я неправильно понял процесс инициализации класса.Любая помощь приветствуется.

class PlayableMedia(@set:PropertyName("id")
                @get:PropertyName("id")
                var id: String="",
                @set:PropertyName("audio_url")
                @get:PropertyName("audio_url")
                var audio_url: String="",
                @set:PropertyName("title")
                @get:PropertyName("title")
                var title: String = "",
                @set:PropertyName("artist")
                @get:PropertyName("artist")
                var artist: String = "") {

public var metadata: MediaMetadata? = null
public var hasOfflineCopy = false
var isDownloading = false

constructor():this("","","","")
init {
    MediaCacheWorkerTask(MyApplication.getAppContext(), object : MediaCacheCallback {
        override fun onSnapshotFound(stream: FileInputStream) {
            hasOfflineCopy = true
        }

        override fun onSnapshotMissing(url: String) {}
        override fun onSnapshotDownloaded(downloaded: Boolean) {}
    }).execute(audio_url) <--all properties are empty/default at this point

}
...