在我的Firestore聊天应用程序中,仅正确设置了我数据库中一个用户的用户名,而其他用户根本没有显示任何名称。
UserAdapter.java
@Override
protected void onBindViewHolder(@NonNull ViewHolder holder, int position, @NonNull final User model) {
holder.fName.setText(model.getfName());
holder.profile_image.setImageResource(R.drawable.ic_default);
holder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(v.getContext(), MessageActivity.class);
intent.putExtra("recipientId", model.getUserId());
v.getContext().startActivity(intent);
}
});
}
MessageActivity.java
username = findViewById(R.id.usernametv);
rootRef = FirebaseFirestore.getInstance();
String recipientId = getIntent().getStringExtra("recipientId");
DocumentReference recipientReference = rootRef.collection("users").document(recipientId);
recipientReference.get().addOnCompleteListener(new OnCompleteListener<DocumentSnapshot>() {
@Override
public void onComplete(@NonNull Task<DocumentSnapshot> task) {
if (task.isSuccessful()) {
DocumentSnapshot document = task.getResult();
if (document.exists()) {
Log.d(TAG, "DocumentSnapshot data: " + document.getData());
User user = document.toObject(User.class);
username.setText(user.getfName());
} else {
Log.d(TAG, "No such document");
}
} else {
Log.d(TAG, "get failed with ", task.getException());
}
}
});
我可能是错的,这是因为在onBindViewHolder中将模型声明为final导致的吗?如果是,那么解决方案是什么,因为我最初没有这样声明,而遇到错误,因此不得不将其声明为final来消除错误。
当我单击任何其他用户时输出
答案 0 :(得分:0)
因为您正在尝试检索未收集用户的文档。只需尝试使用用户集合删除recipentid。