Я могу сохранить и обновить содержимое своего списка в FirebaseFirestore, но не могу прочитать и заполнить результат get() в тот же список. Кажется, он считывает данные в результат, но я не могу извлечь данные из результата в список. Сообщений об ошибках нет, приложение просто вылетает.
Ниже я включил код для сохранения/обновления коллекции (он работает нормально) и код для чтения коллекции. Я также пробовал MutableStateFlow, но безуспешно.
Я пробовал следующее либо целиком, либо в цикле for по элементам, но безуспешно:
.toObjects(SitesList::class.java)
.toObject(SitesList::class.java)
Я также пробовал .addSnapshotListener и .onCompleteListener.
Иногда мне нужно использовать цикл while из трех итераций, чтобы данные можно было прочитать.
Я также безуспешно пытался прочитать отдельный документ
.document("0").
Чего мне не хватает?
data class SitesList(
var siteId: Int,
var siteImage: Int,
var siteName: String,
var sitePages: List
)
data class SitePagesList(
var pageId: Int,
var pageContent: String,
var pageImage: String? = null
)
@HiltViewModel
class SitesViewModel @Inject constructor(
val sitesAuth: FirebaseAuth,
val sitesDb: FirebaseFirestore,
val sitesStorage: FirebaseStorage
) : ViewModel() {
private val _sitesList = mutableStateListOf()
val sitesList = mutableStateListOf()
init {
getSitesList()
}
private fun createOrUpdateSite(siteList: SitesList) {
sitesDb.collection("sites")
.document(siteList.siteId.toString())
.get()
.addOnSuccessListener {
if (it.exists()) {
it.reference.update(siteList.toMap())
.addOnSuccessListener {
}
.addOnFailureListener {
// handle error
}
} else {
sitesDb.collection("sites")
.document(siteList.siteId.toString())
.set(siteList)
}
}
.addOnFailureListener {
// handle error
}
}
private fun getSitesList() {
sitesDb.collection("sites")
.get()
.addOnSuccessListener { result ->
_sitesList.clear()
for (document in result) {
val site = document.toObject()
site.let { site ->
_sitesList.add(site)
}
}
}
.addOnFailureListener {
// error handler
}
}
}
Подробнее здесь: https://stackoverflow.com/questions/798 ... tpack-comp
Как получить список и извлечь данные из результата в Jetpack Compose из FirebaseFirestore get() ⇐ Android
Форум для тех, кто программирует под Android
1769956842
Anonymous
Я могу сохранить и обновить содержимое своего списка в FirebaseFirestore, но не могу прочитать и заполнить результат get() в тот же список. Кажется, он считывает данные в результат, но я не могу извлечь данные из результата в список. Сообщений об ошибках нет, приложение просто вылетает.
Ниже я включил код для сохранения/обновления коллекции (он работает нормально) и код для чтения коллекции. Я также пробовал MutableStateFlow, но безуспешно.
Я пробовал следующее либо целиком, либо в цикле for по элементам, но безуспешно:
.toObjects(SitesList::class.java)
.toObject(SitesList::class.java)
Я также пробовал .addSnapshotListener и .onCompleteListener.
Иногда мне нужно использовать цикл while из трех итераций, чтобы данные можно было прочитать.
Я также безуспешно пытался прочитать отдельный документ
.document("0").
Чего мне не хватает?
data class SitesList(
var siteId: Int,
var siteImage: Int,
var siteName: String,
var sitePages: List
)
data class SitePagesList(
var pageId: Int,
var pageContent: String,
var pageImage: String? = null
)
@HiltViewModel
class SitesViewModel @Inject constructor(
val sitesAuth: FirebaseAuth,
val sitesDb: FirebaseFirestore,
val sitesStorage: FirebaseStorage
) : ViewModel() {
private val _sitesList = mutableStateListOf()
val sitesList = mutableStateListOf()
init {
getSitesList()
}
private fun createOrUpdateSite(siteList: SitesList) {
sitesDb.collection("sites")
.document(siteList.siteId.toString())
.get()
.addOnSuccessListener {
if (it.exists()) {
it.reference.update(siteList.toMap())
.addOnSuccessListener {
}
.addOnFailureListener {
// handle error
}
} else {
sitesDb.collection("sites")
.document(siteList.siteId.toString())
.set(siteList)
}
}
.addOnFailureListener {
// handle error
}
}
private fun getSitesList() {
sitesDb.collection("sites")
.get()
.addOnSuccessListener { result ->
_sitesList.clear()
for (document in result) {
val site = document.toObject()
site.let { site ->
_sitesList.add(site)
}
}
}
.addOnFailureListener {
// error handler
}
}
}
Подробнее здесь: [url]https://stackoverflow.com/questions/79880405/how-do-i-retrieve-a-list-and-extract-the-data-from-the-result-into-jetpack-comp[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия