Android 验证在firebase回收器适配器中不起作用

Android 验证在firebase回收器适配器中不起作用,android,firebase,firebase-realtime-database,android-recyclerview,Android,Firebase,Firebase Realtime Database,Android Recyclerview,我正在应用一个验证,在该验证中,我从数据库获取列表中的所有令牌,然后在onBindviewHolder Iam中应用Foreach循环,在该循环中,我将所有令牌与当前用户令牌匹配,如果令牌匹配,则该项视图不应显示在recyclerview中 我在这里得到了代币列表: for (DataSnapshot parent : dataSnapshot.getChildren()) { String token; token

我正在应用一个验证,在该验证中,我从数据库获取列表中的所有令牌,然后在onBindviewHolder Iam中应用Foreach循环,在该循环中,我将所有令牌与当前用户令牌匹配,如果令牌匹配,则该项视图不应显示在recyclerview中 我在这里得到了代币列表:

for (DataSnapshot parent : dataSnapshot.getChildren()) {
                    String token;
                    token = parent.getKey();
                    tokenList.add(token);
                }
在此显示列表:

 for (String tokens : tokenList) {

                    if (bloodGroupMatched.contains(bloodGroup) && !tokens.equals(userId)) {

                        holder.name.setText(profiles.getName());
                        holder.type.setText(userType);
                        holder.distance.setText(dist + " km");
                        holder.itemView.setVisibility(View.VISIBLE);
                        LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);
                        params.setMargins(10, 5, 5, 10);
                        holder.itemView.setLayoutParams(params);
                    } else {

                        holder.itemView.setVisibility(View.GONE);
                        holder.itemView.setLayoutParams(new RecyclerView.LayoutParams(0, 0));
                    }

                }
在显示列表时,如果我烤了令牌,循环不会结束,它会在列表结束时从开始一直显示令牌,并且不会在recyclerview中显示任何内容。我想显示用户列表,但不符合条件的用户除外。如果我删除此检查!equalsuserId并删除循环它开始工作正常,但我也必须应用此验证

我正在获取这些节点,并且哪个节点与当前登录的用户节点匹配我不想显示他的详细信息。 这是我的全部功能,我在其中使用以下逻辑:

adapter = new FirebaseRecyclerAdapter<Profiles, DonarViewHolder>(model) {
            @Override
            protected void onBindViewHolder(@NonNull DonarViewHolder holder, int position, @NonNull Profiles profiles) {

                ArrayList<String> bloodGroupMatched = new ArrayList<>();
                bloodGroupMatched.addAll(profiles.getMatched_bloodGroups());

                for (String tokens : tokenList) {

                    if (bloodGroupMatched.contains(bloodGroup) && !tokens.equals(userId)) {

                        holder.name.setText(profiles.getName());
                        holder.itemView.setVisibility(View.VISIBLE);
                        LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);
                        params.setMargins(10, 5, 5, 10);
                        holder.itemView.setLayoutParams(params);
                    } else {

                        holder.itemView.setVisibility(View.GONE);
                        holder.itemView.setLayoutParams(new RecyclerView.LayoutParams(0, 0));
                    }
                }
            }

            @NonNull
            @Override
            public DonarViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
                View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.activity_donar_view_holder, parent, false);
                return new DonarViewHolder(view);
            }
        };
        recyclerView.setLayoutManager(new LinearLayoutManager(this));
        adapter.startListening();
        progressDialog.dismiss();
        recyclerView.setAdapter(adapter);

通过在onBindViewHolder中更改逻辑,我得到了解决方案 我删除了foreach循环,并开始将userId与tokenlist位置匹配


您能展示您的数据库结构并详细说明您的需求,而不是要求用代码解决您的问题吗?这可能会很方便地解决问题,请将您的数据库结构添加为JSON文件或至少是屏幕截图,而不是您的方法。我已经更新了我的问题
   ArrayList<String> bloodGroupMatched = new ArrayList<>();
        bloodGroupMatched.addAll(profiles.getMatched_bloodGroups());


        if (bloodGroupMatched.contains(bloodGroup) && !userId.equals(tokenList.get(position))){

            holder.name.setText(profiles.getName());
            holder.type.setText(userType);
            holder.distance.setText(dist + " km");
            holder.itemView.setVisibility(View.VISIBLE);
            LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);
            params.setMargins(10, 5, 5, 10);
            holder.itemView.setLayoutParams(params);
        } else {

            holder.itemView.setVisibility(View.GONE);
            holder.itemView.setLayoutParams(new RecyclerView.LayoutParams(0, 0));
        }