firebase中UID的java比较在FirebaseRecyclerAdapter中不一致
我想为除当前用户之外的所有用户显示一个视图保持架。我找到的最好的解决方案是简单地查询所有“用户”,然后隐藏当前的用户视图持有者。为了这样做,我检查模型用户是否是当前用户。然而,我的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