新用户属于从未添加到的组

问题描述

我目前正在开发一个应用程序,用户可以在其中创建组并向组中添加成员。今天,我创建了一个新用户来测试该应用程序。当我登录这个新用户时,我检查了它是否是任何组的一部分,但我不希望它是新的。事实并非如此。但是,当我登录我的普通用户并单击组时,我看到了测试用户名称。为什么看起来该用户是从未添加到的组的一部分?

请注意,在浏览我的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");

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...