Android Firebase好友搜索如何获取当前登录用户并过滤自身搜索结果?
解决方案
实现逻辑
Firebase 实时数据库单次查询不支持同时按用户名检索 + 排除指定 UID 的复合条件过滤,因此我们可以在列表数据绑定阶段过滤当前登录用户的条目,实现隐藏自身账号的效果,改造成本最低且不影响原有检索逻辑。
具体修改步骤
- 第一步:在
FindFriendsActivity中定义全局变量存储当前登录用户的UID,避免重复调用接口获取
// 请确保调用这段代码时用户已处于登录状态,否则会抛出空指针异常,可提前增加登录状态判断规避 private String currentUid = FirebaseAuth.getInstance().getCurrentUser().getUid();
- 第二步:修改
searchForFriends方法中的onBindViewHolder逻辑,加入UID匹配过滤规则
@Override protected void onBindViewHolder(@NonNull FindFriendsViewHolder holder, int position, @NonNull FindFriends model) { // 获取当前遍历到的用户UID(前提是你的users节点子节点的key为用户UID,这是常规存储规则) String searchedUid = getRef(position).getKey(); // 匹配到当前登录用户则隐藏条目,不加载数据 if (searchedUid.equals(currentUid)) { holder.itemView.setLayoutParams(new RecyclerView.LayoutParams(0, 0)); return; } // 非当前登录用户正常渲染数据 holder.userFullName.setText(model.getFullname()); holder.userStatus.setText(model.getStatus()); Picasso.get().load(model.getProfileimage()).into(holder.userProfileImage); }
补充说明
如果你已经在FindFriends实体类中定义了uid字段及对应的getUid()方法,也可以直接用model.getUid()替换上方的getRef(position).getKey()获取待检索用户的UID,效果完全一致。
内容的提问来源于stack exchange,提问作者Terminator
相关产品推荐
相关产品推荐

