android - 如何为具有特定子子值的子项检索 Firebase DatabaseReference?
问题描述
我是 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” requestStatus 的用户
解决方案
找到了解决方案。
改变
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()
推荐阅读
- r - geom_dotplot 中未对齐的点
- java - 我可以编写一个休眠实体吗?
- c# - Azure Functions 的 HostingEnviornment.QueueBackgroundWorkItem 等效项
- mysql - 在 MySql 中使用查询查找排名
- charts - 具有正常和对数刻度的剑道图表
- bash - 如何制作 git checkout
仅显示我在本地拥有的分支机构 - c++ - 如何仅使用 SSE2 以双倍地板/整数?
- r - 如何使用fluidRow和mainPanel使文本居中?
- python - 多字选项
- c# - ASP.NET MVC 5 - 模型中有 HTML 内容的奇怪行为