Я использую firestore в android studio для выполнения запросов. Когда я выполняю запрос в той же операции, он возвращает запрос без проблем, но когда я отделяю этот запрос и делаю его из класса, он становится пустым
Пользовательский класс, я делаю запрос отсюда, он получает их, но возвращает пустое:
class User (var userId:String){
private val db = FirebaseFirestore.getInstance()
var userProductsRef = db.collection("User").document(userId)
.collection("Products")
//I have no idea why it does not send from the class, or why they arrive empty, I will pass the code
//to mainActivity
fun getProduct():ArrayList<Product> {
var listItems = arrayListOf<Product>()
userProductsRef.get().addOnSuccessListener { documents ->
for(document in documents){
listItems.add(document.toObject(Product::class.java))
//With this you confirm that it brings the objects from firestore
Log.w("ProductName", "Name: ${document.toObject(Product::class.java).name}")
}
Log.w("id", "Name: ${userId}")
}.addOnFailureListener { exception ->
Log.w("Error", "e: ", exception)
}
Log.w("List", "List User: ${listItems}")
return listItems
}
}
Класс продукта
class Product (var name:String = "", var price: Double=0.0, var created_at: Timestamp= Timestamp.now())
Запрос от mainActivity
private fun listView() {
var userCollection = db.collection("User")
val listItems = arrayListOf<Product>()
userCollection.get().addOnSuccessListener { documents ->
for (document in documents){
var userProductsRef = db.collection("User").document(document.id)
.collection("Products")
//This is the query that does not bring me anything from the user class, here if it works
userProductsRef.get().addOnSuccessListener { documents ->
for(document in documents){
listItems.add(document.toObject(Product::class.java))
Log.w("ProductName", "Name: ${document.toObject(Product::class.java).name}")
}
val adapter = ProductAdapter(this, listItems)
listProducts.adapter = adapter
Log.w("ProductList", "Name: ${listItems}")
}.addOnFailureListener { exception ->
Log.w("Error", "e: ", exception)
}
}
}.addOnFailureListener { exception ->
Log.w("Error", "Error getting documents: ", exception)
}
}