Recycler View, показывающий дубликаты - PullRequest
0 голосов
/ 04 мая 2020

enter image description here

На изображении выше, когда я нажимаю кнопку «Далее» для любого элемента, в окне рециркуляции автоматически добавляются обновленные значения всех элементов дважды, как показано на рисунке. ниже изображение. (Здесь я нажал следующую кнопку UJjwal Pratap)

enter image description here

Адаптер

public void onBindViewHolder(@NonNull ViewHolder holder, final int position) {
        final UserDataModel userDataModel = userDataModelList.get(position);
        userName.setText(userDataModel.getUserName());
        userFollowers.setText(userDataModel.getUserFollowers() + " Followers");

        followUser.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                DatabaseReference databaseReference = FirebaseDatabase.getInstance().getReference().child("Users").child(userDataModel.getUserID()).child("Followers")
                        .child(Objects.requireNonNull(FirebaseAuth.getInstance().getUid()));
                databaseReference.addListenerForSingleValueEvent(new ValueEventListener() {
                    @Override
                    public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                        if (dataSnapshot.exists() && Objects.requireNonNull(dataSnapshot.getValue()).toString().equals("1")) {
                            FirebaseDatabase.getInstance().getReference().child("Users").child(userDataModel.getUserID()).child("Followers")
                                    .child(Objects.requireNonNull(FirebaseAuth.getInstance().getUid())).removeValue();
                            FirebaseDatabase.getInstance().getReference().child("Users").child(FirebaseAuth.getInstance().getUid())
                                    .child("Following").child(userDataModel.getUserID()).removeValue();
                        } else {
                            FirebaseDatabase.getInstance().getReference().child("Users").child(userDataModel.getUserID()).child("Followers")
                                    .child(Objects.requireNonNull(FirebaseAuth.getInstance().getUid())).setValue("1");
                            FirebaseDatabase.getInstance().getReference().child("Users").child(FirebaseAuth.getInstance().getUid())
                                    .child("Following").child(userDataModel.getUserID()).setValue("1");
                        }
                    }

                    @Override
                    public void onCancelled(@NonNull DatabaseError databaseError) {

                    }
                });
            }
        });
    }

Фрагмент

FirebaseDatabase.getInstance().getReference().child("Users").addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                for (DataSnapshot childSnapshot : dataSnapshot.getChildren()) {
                    if (!Objects.equals(childSnapshot.getKey(), FirebaseAuth.getInstance().getUid())) {
                        final UserDataModel userDataModel = childSnapshot.getValue(UserDataModel.class);
                        assert userDataModel != null;
                        userDataModel.setUserFollowers(String.valueOf(childSnapshot.child("Followers").getChildrenCount()));
                        PeopleArrayList.add(userDataModel);
                    }
                }
                PeopleAdapter = new PeopleAdapter(PeopleArrayList);
                PeopleRecyclerView.setAdapter(PeopleAdapter);
            }

            @Override
            public void onCancelled(@NonNull DatabaseError databaseError) {

            }
        });

1 Ответ

1 голос
/ 04 мая 2020

Сделать veriable из PeopleArrayList

Затем используйте peopleArrayList.clear перед настройкой адаптера

Затем используйте peopleAdapter.notifySetDataChanged();

Спасибо! Удачного кодирования!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...