Firebase不会在第一次加载数据

时间:2020-03-16 10:34:17

标签: android firebase kotlin firebase-realtime-database

我正在尝试将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)
        }
    }

重新加载片段后,我没有任何问题。有人可以告诉我我在做什么错吗?

1 个答案:

答案 0 :(得分:1)

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

此外,将您的观察者附加到onActivityCreated()