Search code examples
listkotlinobjectmutablelist

How to put multiple objects in a mutableListOf in Kotlin?


I'm trying to put some objects in a mutableListOf, but all of them ended up overriding.

class Users {...}

class dbUsers{
var users = Users()
val list = mutableListOf(users)

fun addUser(phone: Int, name: String){
    users.phone = phone
    users.name = name
    list.add(users)
}
}

fun main() {
var dbAccess = dbUsers()
dbAccess.addUser(8439, "Thiago")
dbAccess.addUser(12312, "Maria")
println(dbAccess.list[0].name)
println(dbAccess.list[1].name)
}

When We print at position 1, we see that was override


Solution

  • You have initialized Users object only once, at the class level in dbUsers. You need to create new object everytime before adding the user to the list. Move the users initialization within the method instead

    class dbUsers{
       
       val list = mutableListOf<Users>()
    
       fun addUser(phone: Int, name: String){
         var users = Users()
         users.phone = phone
         users.name = name
         list.add(users)
       }
    }