#android #firebase #google-cloud-firestore
#Android #firebase #google-облако-firestore
Вопрос:
Был простой запрос с Firestore внутри ViewModel
, все в порядке, за исключением того, что он не входит в for
инструкцию и никогда не запускается, и это обычно происходит при первом запуске или установке проекта.
Примечание: Это первая страница (фрагмент) ViewPager
, в то время как вторая страница, которая имеет идентичный подход к получению документов, работает нормально.
fun fetchAssignments(){
fireStore.collection(appContext.getString(R.string.assignment))
.whereEqualTo(appContext.getString(R.string.type), GlobalConfig.userData.shift)
.orderBy(appContext.getString(R.string.time), Query.Direction.DESCENDING)
.get()
.addOnSuccessListener {
val assList = mutableListOf<AssignmentData>()
for (item in it){
val assignment = item.toObject(AssignmentData::class.java)
assignment.documentId = item.id
assList.add(assignment)
}
assignmentList.value = assList
}
.addOnFailureListener {
assignmentList.value = listOf()
}
}
Но при моем втором запуске for
оператор работает, возможно, кэш также помогает.
Это должно быть ошибкой, потому что почему такой запрос работает со вторым фрагментом с почти таким же запросом, а не с первым фрагментом, и почему, когда я снова вызываю функцию с помощью кнопки повтора, она работает по назначению?
Для получения дополнительной информации проверьте его билет
Комментарии:
1. В чем «это»
for (item in it){
?2. Какой тип объекта
assignmentList
?3. @AlexMamo его
MutableLiveData<List<AssignmentData>>
4. Как вы наблюдаете за этим объектом?
5. просто базовый наблюдатель viewmodel с viewlifecycle, а Firestore в первую очередь имеет пустой
QuerySnapshot
, поэтому проблема, скорее всего, в этой части. Пожалуйста, посмотрите ссылку на билет