I am trying to read all the users from my firebase realtime database and storing them in a database class, reading the users from the database works as expected however when i try to access the users from outside the class it returns an empty list. This is my database class
class Database {
private val database = FirebaseDatabase.getInstance();
var users = mutableListOf<User>()
init {
val valueEventListener = object : ValueEventListener {
override fun onDataChange(data: DataSnapshot) {
if (data.exists()){
for (child in data.children) {
val user = child.getValue(User::class.java)
users.add(user!!)
}
}
}
override fun onCancelled(data: DatabaseError) {
println("Error occurred while reading users data")
}
}
database.getReference("Users").addValueEventListener(valueEventListener)
}
fun writePerson(user:User) {
val users = database.getReference("Users")
users.child(user.firstname).setValue(user)
}
this is where i try to access the users from my database class
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val database = Database()
val rafael = User("Rafael","Backx");
rafael.addPhoneNumber("0123456789")
database.writePerson(rafael)
val rafael2 = User("Rafael2","Backx");
rafael2.addPhoneNumber("012345678910")
database.writePerson(rafael2)
val users = database.users;
println(users.size)
for (child in users){
println(child)
}
}
This is my first time using kotlin, android studio and firebase.
Thanks in advance