Firebase не загружает данные в первый раз - PullRequest
0 голосов
/ 16 марта 2020

Я пытаюсь загрузить данные из Firebase в RecyclerView, однако пока я не перезагружаю свой фрагмент, ничего не отображается.

Это мой метод onCreate в SubjectsFragment:

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 Ответ

1 голос
/ 16 марта 2020

Попробуйте использовать setValue напрямую. Но вы можете быть правы, использование postValue из фонового потока является способом, которым это должно быть сделано.

Кроме того, присоедините своих наблюдателей в onActivityCreated ()

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