新用户是从未添加到的组的一部分

New user is part of a group it was never added to

我目前正在开发一款应用,用户可以在其中创建群组并向群组添加成员。今天我创建了一个新用户来测试应用程序。当我登录这个新用户时,我检查它是否属于任何组,我没想到会看到它,因为它是新用户。但事实并非如此。但是当我登录我的常用用户并单击组时,我看到了测试用户的名称。为什么此用户似乎是其从未添加到的组的一部分?

应该注意的是,在查看我的 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);
    }
}

}

这是使用适配器的activity。

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");