问题描述
我目前正在开发一个应用程序,用户可以在其中创建组并向组中添加成员。今天,我创建了一个新用户来测试该应用程序。当我登录这个新用户时,我检查了它是否是任何组的一部分,但我不希望它是新的。事实并非如此。但是,当我登录我的普通用户并单击组时,我看到了测试用户的名称。为什么看起来该用户是从未添加到的组的一部分?
请注意,在浏览我的Firebase时,似乎也没有邀请该测试用户。我正在使用Firestore回收器适配器在recyclerView中获取数据。
FirestoreMemberAdapter.java:
public class FirestoreMemberAdapter extends FirestoreRecyclerAdapter<MemberModel,FirestoreMemberAdapter.MemberViewHolder> {
private static final String TAG = FirestoreMemberAdapter.class.getSimpleName();
private Context context;
private String projectId;
private String projectName;
public FirestoreMemberAdapter(@NonNull FirestoreRecyclerOptions<MemberModel> options,Context context,String projectId,String projectName) {
super(options);
this.context = context;
this.projectName = projectName;
this.projectId = projectId;
}
@Override
protected void onBindViewHolder(@NonNull MemberViewHolder holder,int position,@NonNull final MemberModel model) {
holder.mTextView.setText(model.getName());
if (model.getProfile_image() == null) {
Picasso.get().load(R.drawable.profile_image).into(holder.mImageview);
} else {
Picasso.get().load(model.getProfile_image()).into(holder.mImageview);
}
holder.mLinearLayout.setonClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Log.d(TAG,"onClick: Clicked on FirestoreMemberAdapter ");
Intent intent = new Intent(context,ProfileMemberPage.class);
intent.putExtra(StringCreator.PROJECT_TITLE,projectName);
intent.putExtra(StringCreator.PROJECT_ID,projectId);
intent.putExtra(StringCreator.NAME,model.getName());
intent.putExtra(StringCreator.EMAIL,model.getEmail());
intent.putExtra(StringCreator.USER_ID,model.getUser_id());
intent.putExtra(StringCreator.USER_informatION,model.getUser_information());
context.startActivity(intent);
}
});
}
@NonNull
@Override
public MemberViewHolder onCreateViewHolder(@NonNull ViewGroup parent,int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.layout_projectmembers,parent,false);
return new MemberViewHolder(view);
}
public class MemberViewHolder extends RecyclerView.ViewHolder {
private LinearLayout mLinearLayout;
private TextView mTextView;
private ImageView mImageview;
public MemberViewHolder(@NonNull View itemView) {
super(itemView);
mTextView = itemView.findViewById(R.id.memberTitle);
mLinearLayout = itemView.findViewById(R.id.layout_members);
mImageview = itemView.findViewById(R.id.memberImage);
}
}
}
这是使用适配器的活动。
projectClicked.java:
//widgets
private RecyclerView recyclerViewMembers;
private TextView projectName;
private Button cameraBtn;
private FloatingActionButton addUserBtn;
//Firebase
private FirebaseFirestore firebaseFirestore = FirebaseFirestore.getInstance();
private Query query;
private FirestoreRecyclerOptions<MemberModel> options;
private FirestoreMemberAdapter adapter;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_project_clicked);
projectName = findViewById(R.id.projectName);
addUserBtn = findViewById(R.id.addUserBtn);
cameraBtn = findViewById(R.id.cameraBtn);
initRecyclerView();
addUserBtn.setonClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent newIntent = new Intent(projectClicked.this,UserToProject.class);
Bundle projectBundle = getIntent().getExtras();
if (projectBundle != null) {
newIntent.putExtras(projectBundle);
}
startActivity(newIntent);
}
});
}
private void initRecyclerView() {
Log.d(TAG,"InitRecyclerView: init recyclerview");
if (getIntent().hasExtra(StringCreator.PROJECT_TITLE) && getIntent().hasExtra(StringCreator.PROJECT_ID)) {
final String pName = getIntent().getStringExtra(StringCreator.PROJECT_TITLE);
final String pID = getIntent().getStringExtra(StringCreator.PROJECT_ID);
projectName.setText(pName);
recyclerViewMembers = findViewById(R.id.recyclerView_members);
query = firebaseFirestore.collection("users");
options = new FirestoreRecyclerOptions.Builder<MemberModel>().setQuery(query,MemberModel.class).build();
adapter = new FirestoreMemberAdapter(options,projectClicked.this,pID,pName);
recyclerViewMembers.setHasFixedSize(true);
recyclerViewMembers.setAdapter(adapter);
recyclerViewMembers.setLayoutManager(new linearlayoutmanager(projectClicked.this));
}
}
@Override
public void onStart() {
super.onStart();
adapter.startListening();
}
@Override
public void onStop() {
super.onStop();
adapter.stopListening();
}
希望这是有道理的,如果没有请联系。预先谢谢你。
解决方法
正如@McSlinPlay所提到的,原因可以指出您创建查询的 projectClicked.java 中的代码,并且所有用户(包括测试用户)都是该集合的一部分:
query = firebaseFirestore.collection("users");