
На следующем снимке экрана показано, как переменная sitePages (List) хранится в переменной SitesList в приложении. Переменная sitepages хранится как "Arrays$ArrayList"

Ниже приведен снимок экрана, показывающий, как массив sitePages считывается из базы данных. Переменная sitePages считывается из базы данных как «Объект[10]» из «ArrayList». Как получить доступ к данным в объекте elementData?

Как получить доступ к 10 спискам в объекте elementData, содержащимся в результате, и перенести содержимое в список sitePages. Любая помощь будет оценена по достоинству. Если есть альтернативный способ сохранения или чтения данных, я готов изменить и этот код.
Я включил код, который использую для чтения и записи в базу данных. Думаю, я включил достаточное количество.
data class SitesList(
var siteId: Int = 0,
var siteImage: Int = R.drawable.paraglider1,
var siteName: String = "",
var sitePages: List
) {
fun toMap() = mapOf(
"siteId" to siteId,
"siteImage" to siteImage,
"siteName" to siteName,
"sitePages" to sitePages
)
}
data class SitePagesList(
var pageId: Int = 0,
var pageContent: String = "",
var pageImage: String? = null
) {
fun toMap() = mapOf(
"pageId" to pageId,
"pageContent" to pageContent,
"pageImage" to pageImage,
)
}
var sitesList = mutableStateListOf()
init {
getSitesList()
}
fun getSitesList() {
getSitesListFromDb()
}
private fun createOrUpdateSite(site: SitesList) {
// create or update an individual site from SitesList
sitesDb.collection("sites")
.document(site.siteId.toString())
.get()
.addOnSuccessListener {
if (it.exists()) {
it.reference.update(site.toMap())
.addOnSuccessListener {
// completed successfully
}
.addOnFailureListener {
// error handling logic removed
}
} else {
sitesDb.collection("sites")
.document(site.siteId.toString())
.set(site)
}
}
.addOnFailureListener {
// error handling logic removed
}
}
private fun getSitesListFromDb() {
sitesDb.collection("sites")
.get()
.addOnCompleteListener { task ->
if (task.isSuccessful) {
val listOfDocuments = task.result
sitesList.clear()
for (document in listOfDocuments) {
val sitePages = document.data["sitePages"] // used to view contents of the arrayList
@Suppress("UNCHECKED_CAST") val list = SitesList(
siteId = document.data["siteId"].toString().toInt(),
siteImage = document.data["siteImage"].toString().toInt(),
siteName = document.data["siteName"].toString(),
sitePages = document.data["sitePages"] as List
)
sitesList.add(list)
}
} else {
// error handling logic removed
}
}
}
Подробнее здесь: https://stackoverflow.com/questions/798 ... tore-datab
Мобильная версия