object
в Kotlin - одноэлементный, что означает, что вы не можете его инициализировать, и он имеет только один экземпляр в глобальном масштабе. Поэтому, когда вы изменяете элементы одного экземпляра, вы переопределяете предыдущие данные.
Вы должны изменить их обоих (или, по крайней мере, TrackingEventsList) на class
. Если переменные Waybill
чувствительны к экземпляру, то это тоже должен быть класс. Но в коде, который вы добавили, я не смог найти ничего, что говорило бы, что вы используете его как синглтон, поэтому я оставил его как единое целое.
class TrackingEventsList (
var eventDate: String = "",
var eventDescription: String = "")
/**
* Also want to point out that this is still a singleton. If the data inside is instance-specific, you need to change it
* to a class.
*/
object Waybill {
var waybillNumber: String = ""
var originHum: String = ""
var trackingEvents: MutableList<TrackingEventsList> = ArrayList()
}
private fun fillTracking(events: NodeList) {
val item = TrackingEventsList()
for (x: Int in 0 until events.length) {
var tName = (events.item(x) as Element).tagName
var event = (events.item(x).firstChild as Text).wholeText
if (tName == "EventDate") {
item.eventDate = event
}
if (tName == "EventDescription") {
item.eventDescription = event
}
}
Waybill.trackingEvents.add(item)
}
И вы должны изучить соглашения об именах для Kotlin; поля никогда не начинаются с заглавной буквы, если это не статическая константа (в этом случае она полностью верхняя)