【问题标题】:Firebase doesn't load data at first timeFirebase 不会在第一次加载数据
【发布时间】:2020-03-16 10:34:17
【问题描述】:

我正在尝试将数据从 Firebase 加载到 RecyclerView,但是在我重新加载片段之前什么都没有显示。

这是我在SubjectsFragment 中的 onCreate 方法:

viewModel.subjectsListLiveData.observe(
            this,
            Observer { list ->
                subjectsAdapter.swapSubjectsList(list)
                if (subject_list != null && list.size != 0) Animations.runLayoutAnimation(
                    subject_list
                )
            })
viewModel.lessonsListLiveData.observe(
            this,
            Observer { list ->
                subjectsAdapter.swapLessonsList(list)
                if (subject_list != null && list.size != 0) Animations.runLayoutAnimation(
                    subject_list
                )
            })

这是SubjectsFragmentViewModel

    private val subjectsList = MutableLiveData<ArrayList<Subject>>()
    val subjectsListLiveData: LiveData<ArrayList<Subject>>
        get() = subjectsList

    private val lessonsList = MutableLiveData<ArrayList<Lesson>>()
    val lessonsListLiveData: LiveData<ArrayList<Lesson>>
        get() = lessonsList

    init {
        loadSubjects()
        loadLessonsForSubjects()
    }

    fun loadSubjects() {
        GlobalScope.launch {
            val subjects = FirebaseUtils.loadAllSubjects()
            subjectsList.postValue(subjects)
        }
    }

    fun loadLessonsForSubjects() {
        GlobalScope.launch {
            val lessons = FirebaseUtils.loadAllLessons()
            lessonsList.postValue(lessons)
        }
    }

重新加载片段后,我没有任何问题。有人可以向我解释我做错了什么吗?

【问题讨论】:

  • 我的回答对你有帮助吗?

标签: android firebase kotlin firebase-realtime-database


【解决方案1】:

尝试直接使用 setValue。 但您可能是对的,应该使用后台线程中的 postValue。

另外,在 onActivityCreated() 中附加你的观察者

【讨论】:

  • 谢谢!在 onActivityCreated 中附加我的观察者为我解决了这个问题!
  • 如果有人遇到同样的问题,我的另一个问题是我使用 Firebase 作为返回值的函数 - 在此处查看更多信息:stackoverflow.com/a/42811962/9409337
  • 是的,这不是一个好的设计模式。这些请求应该在您的存储库中,然后发送到您的 viewModel。你的 viewModel 观察你的 repo
猜你喜欢
  • 2019-12-02
  • 1970-01-01
  • 2014-12-17
  • 2020-05-27
  • 2018-04-06
  • 1970-01-01
  • 1970-01-01
  • 2014-01-22
  • 1970-01-01
相关资源
最近更新 更多