'Android Firebase Firestore query returns empty results from function, but the same code works when included directly

I'm having a trouble with firebase queries in Studio. I'm trying to abstract a simple query to get a list of object stored in a collection (in my case "users") I want to create a function stored in a Class that can be called by every fragment into the project. But I don' t find any method to do that, is to repeate the same instruction the only way to do that? Here is an example

db.collection("users") //get all the users
.get()
.addOnCompleteListener(task -> {
   if (task.isSuccessful()) {
       if(task.getResult() != null) {
           for (QueryDocumentSnapshot document : task.getResult()) { 
                usersList.add(document.toObject(User.class));
            } else {
                Log.w(LOGIN, "Error getting documents.", task.getException());
            }
        });

I write these lines of code every time I need them, but I want to create a method that return a List as in this example:

public static List<User> getUsers(FirebaseFirestore db) {
  List<User> usersList = new ArrayList<>();

  db.collection("users") //get all the users
  .get()
  .addOnCompleteListener(task -> {
    if (task.isSuccessful()) {
       if(task.getResult() != null) {
           for (QueryDocumentSnapshot document : task.getResult()) { 
                usersList.add(document.toObject(User.class));
            } else {
                Log.w(LOGIN, "Error getting documents.", task.getException());
            }
        });
    } else {
      //error
    }
  return usersList;
}


Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source