如何筛选Firebase中requestStatus为true的用户,实现列表过滤展示
解决方案
你只需要修改原本的全量查询为带字段筛选条件的查询即可,无需修改适配器逻辑,具体操作如下:
- 修改
onCreateView中的数据库查询逻辑,使用orderByChild+equalTo组合过滤requestStatus符合要求的条目:
// 替换原本的database引用,改为带筛选条件的查询 val query = FirebaseDatabase.getInstance().getReference().child("users") .orderByChild("requestStatus") // 注意:如果你的数据库中requestStatus存储的是字符串类型的"true",请改为.equalTo("true") .equalTo(true) val clientsRecycler = binding.clientsRecycler val options: FirebaseRecyclerOptions<User> = FirebaseRecyclerOptions.Builder<User>() // 把原本传入的database替换为上面的query .setQuery(query, User::class.java) .build() adapter = Adapter(options) clientsRecycler.adapter = adapter
提示:不要在适配器层通过隐藏条目实现过滤,会导致列表出现空白占位、分页异常等问题,在查询层过滤是官方推荐的最佳实践。
- (建议配置)为了提升查询性能、避免运行时警告,请到Firebase控制台的Realtime Database规则页,为
users节点添加requestStatus字段的索引:
{ "rules": { "users": { ".indexOn": "requestStatus", // 保留你原本配置的其他users节点规则即可 } // 其他原有规则保持不变 } }
内容的提问来源于stack exchange,提问作者M.Ed
相关产品推荐
相关产品推荐

