【问题标题】:How to retrieve a Firebase DatabaseReference for child with specific children child values?如何为具有特定子子值的子项检索 Firebase DatabaseReference?
【发布时间】:2021-12-25 04:46:17
【问题描述】:

我是 Android 开发的新手,我最近一直在学习 Firebase,但一直被这个问题困扰。一切正常,我能够使用 FirebaseRecyclerAdapter 成功显示用户 ia RecyclerView,这是我的问题,我想显示他们 requestStatus 设置为“true”,而不是 所有 用户。尝试搜索此内容无济于事。

这是我的 Firebase 实时数据库。

在onCreateView中调用数据库并设置适配器

        val database = FirebaseDatabase.getInstance().getReference().child("users")

    val clientsRecycler = binding.clientsRecycler

    val options: FirebaseRecyclerOptions<User> = FirebaseRecyclerOptions.Builder<User>()
        .setQuery(database, User::class.java)
        .build()

    adapter = Adapter(options)
    clientsRecycler.adapter = adapter

我的适配器类

class Adapter(options: FirebaseRecyclerOptions<User>) :
FirebaseRecyclerAdapter<User, Adapter.ClientsViewHolder>(options) {

class ClientsViewHolder(private val binding: ClientItemBinding) : RecyclerView.ViewHolder(binding.root) {
    val name = binding.clientName
    val phone = binding.clientPhone
    val location = binding.clientLocation
}

override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ClientsViewHolder {
    return ClientsViewHolder(ClientItemBinding
        .inflate(LayoutInflater.from(parent.context), parent, false))
}

override fun onBindViewHolder(holder: ClientsViewHolder, position: Int, model: User) {
    holder.name.text = model.name
    holder.phone.text = model.phone
    holder.location.text = model.location
}}

如何只显示 John(他的 requestStatus 设置为 true)而不显示 Robert?

我猜该解决方案与 FirebaseDatabase.getInstance().getReference().child("users") 有关,但我不确定如何告诉 Firebase 我只希望用户具有“true” " 请求状态

【问题讨论】:

    标签: android firebase firebase-realtime-database android-recyclerview


    【解决方案1】:

    找到了解决办法。

    改变

        val database = FirebaseDatabase.getInstance().getReference().child("users")
    

            var filterQuery = FirebaseDatabase.getInstance().getReference().child("users").orderByChild("requestStatus").equalTo("true")
    

            val options: FirebaseRecyclerOptions<User> = FirebaseRecyclerOptions.Builder<User>()
            .setQuery(database, User::class.java)
            .build()
    

         val options: FirebaseRecyclerOptions<User> = FirebaseRecyclerOptions.Builder<User>()
            .setQuery(filterQuery, User::class.java)
            .build()
    

    基本上不使用 DatabaseReference,只需创建一个查询,然后将其传递给 setQuery()

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-06
      • 2021-01-09
      • 2023-03-27
      • 2016-10-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多