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内部不一致[重复]的主要内容,如果未能解决你的问题,请参考以下文章