Android 如何从当前用户获取FirebaseDataBase快照?

Android 如何从当前用户获取FirebaseDataBase快照?,android,firebase,firebase-realtime-database,kotlin,Android,Firebase,Firebase Realtime Database,Kotlin,我想像这样从我的当前用户创建快照,每次我将$userkey放入我的ref值时,应用程序都会崩溃,出现以下错误: 2018-11-23 22:04:48.414 3871-3871/my.app E/RecyclerView:未连接适配器;跳过布局 2018-11-23 22:04:49.797 3871-3871/my.app E/AndroidRuntime:致命异常:主 进程:nobrand.ljb.musicshare,PID:3871 com.google.firebase.databa

我想像这样从我的当前用户创建快照,每次我将$userkey放入我的ref值时,应用程序都会崩溃,出现以下错误:

2018-11-23 22:04:48.414 3871-3871/my.app E/RecyclerView:未连接适配器;跳过布局 2018-11-23 22:04:49.797 3871-3871/my.app E/AndroidRuntime:致命异常:主 进程:nobrand.ljb.musicshare,PID:3871 com.google.firebase.database.DatabaseException:无法将java.lang.String类型的对象转换为myapp.User类型

当我没有将$userkey放入我的ref值时。该应用程序功能正常,按预期显示所有用户,但正如我所说,我不希望这样。
我将感谢每一个答案和建议

如果直接访问正确的子节点,代码中的循环就不再需要了

这意味着有两种简单的方法可以做到这一点:

按键查询 拆下回路 我建议删除这个循环,因为实际上不再需要它了,但我想同时显示这两个选项

按键查询 拆下回路
private fun getUserInfo() {


val userkey = FirebaseAuth.getInstance().uid ?: ""
val ref = FirebaseDatabase.getInstance().getReference("/users/$userkey")
ref.addListenerForSingleValueEvent(object: ValueEventListener {

    override fun onDataChange(p0: DataSnapshot) {
        val adapter = GroupAdapter<ViewHolder>()

        p0.children.forEach {
            Log.d("getUserInfo", it.toString())
            val user = it.getValue(User::class.java)
            if (user != null) {
                adapter.add(UserItem(user))
            }
        }

        UserInfo_RCView.adapter = adapter
    }

    override fun onCancelled(p0: DatabaseError) {

    }
})
}
}

class UserItem(val user: User): Item<ViewHolder>() {
override fun bind(viewHolder: ViewHolder, position: Int) {
    viewHolder.itemView.UsernameSettings_txt.text = user.username

    Picasso.get().load(user.profileImageUrl).into(viewHolder.itemView.ProfileImage_View)
}

override fun getLayout(): Int {
    return R.layout.userinfo
}
}
val ref = FirebaseDatabase.getInstance().getReference("/users")
ref.orderByKey().equalTo(userkey).addListenerForSingleValueEvent(object: ValueEventListener {

    override fun onDataChange(p0: DataSnapshot) {
        val adapter = GroupAdapter<ViewHolder>()

        p0.children.forEach {
            Log.d("getUserInfo", it.toString())
            val user = it.getValue(User::class.java)
            if (user != null) {
                adapter.add(UserItem(user))
            }
        }

        UserInfo_RCView.adapter = adapter
    }

    override fun onCancelled(p0: DatabaseError) {
        throw p0.toException();
    }
})
val ref = FirebaseDatabase.getInstance().getReference("/users/$userkey")
ref.addListenerForSingleValueEvent(object: ValueEventListener {

    override fun onDataChange(p0: DataSnapshot) {
        val adapter = GroupAdapter<ViewHolder>()

        val user = p0.getValue(User::class.java)
        if (user != null) {
            adapter.add(UserItem(user))
        }

        UserInfo_RCView.adapter = adapter
    }

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