Как получить массив из базы данных в реальном времени в Firebase - PullRequest
0 голосов
/ 23 сентября 2018

Я хочу получить данные из этой базы данных firebase (рисунок ниже) в ArrayListOf , когда класс Product:

data class Product(
val title:String,
val photoURL:String,
val description:String,
val price:Double
)
//and i want to make an array like this 
val r = arrayListOf<Product>()

, поэтому в основном я хочу создать список массивов Firebase_Database_productsлюбая помощь приветствуется:)

firebase-database

Ответы [ 2 ]

0 голосов
/ 23 сентября 2018

только для читателей в будущем вот необходимый код в Kotlin:

val products = arrayListOf<Product>()
        val ref = FirebaseDatabase.getInstance().getReference("products")
        ref.addValueEventListener(object : ValueEventListener {
            override fun onDataChange(dataSnapshot: DataSnapshot) {
                for (productSnapshot in dataSnapshot.children) {
                    val product = productSnapshot.getValue(Product::class.java)
                    products.add(product!!)
                }
                System.out.println(products)
            }

            override fun onCancelled(databaseError: DatabaseError) {
                throw databaseError.toException()
            }
        })
    }

, и вам нужно инициализировать переменные в классе Product следующим образом:

data class Product(
val title:String = "",
val photo:String = "",
val description:String = "",
val price:Double = -1.0
)

, если вы оставите егобез инициализации вы получите class does not define a no-argument constructor ошибку

0 голосов
/ 23 сентября 2018

Примерно так и должно быть:

DatabaseReference ref = FirebaseDatabase.getInstance().getReference("products");
ref.addListenerForSingleValueEvent(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        ArrayList<Product> products = new ArrayList<Product>();
        for (DataSnapshot productSnapshot: dataSnapshot.getChildren()) {
            Product product = productSnapshot.getValue(Product.class);
            products.add(product);
        }
        System.out.println(products);
    }

    @Override
    public void onCancelled(DatabaseError databaseError) {
        throw databaseError.toException();
    }
}

Несколько замечаний:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...