这是我的代码从实时数据库5个项目:
val database = FirebaseDatabase.getInstance()
val brandReference = database.getReference("brandGame").limitToFirst(5)
brandReference.addValueEventListener(object : ValueEventListener {
override fun onDataChange(dataSnapshot: DataSnapshot) {
dataSnapshot.children.forEach {
...
}
}
}
这是我的实时数据库的样子:
什么是获得5项随机的最佳方式? 我知道有没有实时数据库随机函数呢。
如果你知道在元素的数量brandGame/
引用,你可以挑选5个随机数字1和numberOfElements之间和检索这些。 这将导致多次调用数据库。
或者,您可以从下载的一切brandGame/
引用,并只挑选使用纯科特林5个随机元素。 但你必须在参考下载的一切,这可能是很多。
最好的办法是建立一个云功能,做了“接5个随机选择”编辑逻辑服务器端。 https://firebase.google.com/docs/functions/但这需要你写的一些JS :)
正如你所说,没有内置的方式来获得一个参考随机元素。
为了获得一个随机的品牌,请使用以下代码用户侧:
val rootRef = FirebaseDatabase.getInstance().reference
val brandGameRef = rootRef.child("brandGame")
val valueEventListener = object : ValueEventListener {
override fun onDataChange(dataSnapshot: DataSnapshot) {
val brandCountList = ArrayList<String>()
for (ds in dataSnapshot.children) {
val brand = ds.child("brand").getValue(String::class.java)
brandCountList.add(brand!!)
}
val brandCount = brandCountList.size
val randomNumber = Random().nextInt(brandCount)
val randomBrand = ArrayList<String>()
randomBrand.add(brandCountList.get(randomNumber)) //Add the brand product to list
val arrayAdapter = ArrayAdapter(applicationContext, android.R.layout.simple_list_item_1, randomBrand)
list_view.adapter = arrayAdapter
}
override fun onCancelled(databaseError: DatabaseError) {
//Handle exceptions
}
}
brandGameRef.addListenerForSingleValueEvent(valueEventListener)