从Firebase获取随机用户

时间:2020-04-14 19:50:37

标签: android firebase kotlin firebase-realtime-database

我正在用Kotlin开发一个应用程序,用于将图像从Firebase发送给随机用户或多个用户。我的数据库的结构如下:

  • 用户
    • bVk3KBL81AY2LUVUbC6G1qcLAcl2
      • 用户名:测试
      • uid:bVk3KBL81AY2LUVUbC6G1qcLAcl2

我不知道如何从firebase中获取随机用户,但是我没有找到适合我的结构的最佳解决方案。

我尝试这篇文章:How to get unique random product in node Firebase?

但是代码不起作用,我有多个错误

在此先感谢任何可能给我一些解决方案的人。

编辑#1 我已经对其进行了工作,但是它不起作用,例如,我不知道如何将随机数限制为3个用户。 在我的应用程序中,用户可以更改用户限制,因此我需要更改随机限制。

我的代码:

fun chooseRandomUser() {

    val rootRef = FirebaseDatabase.getInstance().getReference()
    val productsRef = rootRef.child("users")

    val valueEventListener: ValueEventListener = object : ValueEventListener {
        override fun onDataChange(dataSnapshot: DataSnapshot) {
            val productList = ArrayList<String?>()
            for (ds in dataSnapshot.children) {
                val name = ds.child("username").getValue(String::class.java)
                productList.add(name)
                Log.d("FragmentActivity", "usernames : $name")
            }
            val productListSize = productList.size
            val randomProductList = ArrayList<kotlin.Int>()
            randomProductList.add(Random().nextInt(productListSize))
            Log.d("FragmentActivity", "list : $randomProductList")
        }

        override fun onCancelled(databaseError: DatabaseError) {
            Log.d("FragmentActivity", "Error: ${databaseError.message}")
        }
    }
    productsRef.addListenerForSingleValueEvent(valueEventListener)

}

1 个答案:

答案 0 :(得分:1)

据我了解,您想从Firebase数据库中拥有的所有用户列表中选择一个随机用户。您可以在android端简单地做到这一点。

我认为您已经知道如何从Firebase数据库中获取所有用户。将用户存储在列表中。然后,我将尝试提出一个random函数,该函数可以给我随机的列表索引,然后我可以基于该随机索引从列表中选择该用户。

同样的实现也可以用于从该列表中选择多个用户。

我希望能帮上忙。