You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 10:24:03