проверка не работает в адаптере переработчика Firebase - PullRequest
0 голосов
/ 19 февраля 2020

Я применяю проверку, в которой я получаю все токены в списке из базы данных, а затем в onBindviewHolder Iam применяю Foreach l oop, в котором я сопоставляю все токены с токеном текущего пользователя и токеном, если он есть. соответствует тому, что представление предмета не должно быть отображено в программе повторного просмотра. Здесь я получаю список токенов:

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

                }

, показывая список, если я выпью за тост токены, которые l oop не заканчивается, и продолжают показывать токены от начала, когда список заканчивается, и ничего не отображать в обзоре переработчика. Я хочу показать список пользователей, кроме тех, кто не соответствует критериям. если я уберу этот флажок "! tokens.equals (userId)" и уберу l oop, он начинает работать нормально, но я должен применить эту проверку также enter image description here

Я получаю эти узлы и и какой узел совпадает с текущим пользовательским узлом входа в систему. Я не хочу показывать его детали. И это вся моя функция, где я использую эту логику c:

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

1 Ответ

0 голосов
/ 08 мая 2020

Я получил решение для этого, изменив мою логику c в onBindViewHolder Я удалил foreach l oop и начал сопоставлять userId с позицией списка токенов

   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));
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...