У меня есть проект Firebase, который содержит коллекцию задач Firestore, связанную с:
- taskNumber (, установленный как идентификатор документа )
- site (имя)
- статус
- местоположение ( необязательно )
- описание ( необязательно )
- примечания ( опционально )
- длиной ( опционально )
- широта ( опционально )
Там дополнительные поля в Firestore, которые я не могу sh передать в объект передачи данных, такие как long
и lat
Вот пример структуры данных Firebase Firestore: ![enter image description here](https://i.stack.imgur.com/tb5Gu.png)
Я использую прослушиватель снимков для прослушивания изменений, внесенных в базу данных, затем добавляю нужные документы в arrayList, который я затем отображаю в представлении рециркулятора
Когда Я пытаюсь запустить приведенный ниже код. Я получаю сообщение об ошибке несоответствия типов @ TaskDTO (taskObj). Как разрешить классу TaskDTO принимать карту?
Код:
val collRef = db.collection("centa_tasks").orderBy("scheduled_date")
collRef.addSnapshotListener { querySnapshot, firebaseFirestoreException ->
if (firebaseFirestoreException != null) {
...
}
...
for ((index,doc) in querySnapshot!!.withIndex()) {
//Get the main values:
var taskObj = doc.data
//Add the task_number:
taskObj["task_number"] = doc.id
//Here I compare the current date to the previous date to determine if day item needs
//to be shown:
if(index != 0) {
val ts1: Timestamp = querySnapshot.documents[index - 1]["scheduled_date"] as Timestamp
val ts2: Timestamp = taskObj["scheduled_date"] as Timestamp
taskObj["showDate"] = ts1 != ts2
}else{
taskObj["showDate"] = true
}
val task = TaskDTO(taskObj) //This is the line of code that needs to be changed.
allTasks.add(task) //I add the task to an arrayList that is sent to recycler adapter.
}
Вот объект передачи данных, который содержит необязательные параметры: TaskDTO.kt:
data class TaskDTO(var site : String,
var taskNumber : String,
var status: Int,
var showDate : Boolean,
var scheduled_date : Timestamp = Timestamp(Date(-1)), //optional
var description : Int = 1, //optional
var location : String = "No location set!", //optional
var notes : String = "" //optional
) {
}
Когда я пытаюсь запустить В приведенном выше коде я получаю сообщение об ошибке несоответствия типов @ TaskDTO (taskObj) Как разрешить классу TaskDTO принимать карту?