Firebase中UID的比较FirebaseRecyclerAdapter内部不一致[重复]

Posted

技术标签:

【中文标题】Firebase中UID的比较FirebaseRecyclerAdapter内部不一致[重复]【英文标题】:Comparison of UID's in firebase not consistent inside FirebaseRecyclerAdaper [duplicate] 【发布时间】:2021-04-10 20:24:29 【问题描述】:

我想为除当前用户之外的所有用户显示一个视图持有者。我找到的最佳解决方案是简单地查询所有“用户”,然后隐藏当前用户视图持有者。为此,我检查模型用户是否是当前用户。但是,我的 if 语句不能正常工作。我打印出两个 UID,显然它们是相等的。但是,我的 if 语句应该只在它们不相等时运行,但在最初打开活动时仍然会执行。如果我跳到另一个活动,然后返回到这个活动,那么它会正常工作并隐藏视图。任何人都知道为什么我的 if 语句在首次创建活动时不起作用?

        final FirebaseRecyclerAdapter<Users, UsersViewHolder>  adapter = new FirebaseRecyclerAdapter<Users, UsersViewHolder>(options) 
            @Override
            protected void onBindViewHolder(@NonNull UsersViewHolder holder, final int position, @NonNull final Users model) 

                holder.setInfo(getApplicationContext(), model.getUsername(), model.getName(), model.getProfilePhoto());
                final String currentUserID = FirebaseAuth.getInstance().getCurrentUser().getUid();
                final String otherUserID = getRef(position).getKey();

                System.out.println(currentUserID + " === " + otherUserID + "\n");
                if (currentUserID != otherUserID) 
                    holder.mView.setOnClickListener(new View.OnClickListener() 
                        @Override
                        public void onClick(View v) 
                            DatabaseReference currentUserDB = FirebaseDatabase.getInstance().getReference().child("Users").child(userID);
                            Map newPost = new HashMap();
                            newPost.put("otherUserID", otherUserID);
                            currentUserDB.updateChildren(newPost);
                            startActivity(new Intent(SearchActivity.this, OthersProfileActivity.class));
                        
                    );
                
                else 
                    holder.mView.setVisibility(View.GONE);
                
            
            @NonNull
            @Override
            public UsersViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) 
                View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.users_layout, parent, false);
                return new UsersViewHolder(v);
            
        ;

        adapter.startListening();
        rvSearchUsers.setAdapter(adapter);

【问题讨论】:

【参考方案1】:

不要将== 用于String 之类的对象。而是使用.equals()。阅读more。

【讨论】:

就是这样。谢谢你的回答。

以上是关于Firebase中UID的比较FirebaseRecyclerAdapter内部不一致[重复]的主要内容,如果未能解决你的问题,请参考以下文章

Firebase 数据库分页滚动动作

Firebase 重新登录/额外登录会删除所有用户数据

如何每次从 Firebase 数据库中获取随机 UId?

Firebase 在每个视图中修改 uid

将用户 uid 链接到 firebase 数据库

Firebase:如何获取 User.uid?