My RecyclerView дублирует представления моих элементов

Итак, я тестирую Recycler View и сталкиваюсь с некоторыми проблемами при добавлении нового элемента.

У меня есть RecyclerView, где я пытаюсь отобразить контакты пользователя, но когда я создаю новый элемент, все контакты дублируются. Я знаю, что мне следует очистить свое представление перед добавлением новых данных, но я не знаю, как это сделать.

Вот мой основной код активности

for (DataSnapshot postSnapshot : snapshot.child(currentUser.getUid()).getChildren()) {
                    Document document = postSnapshot.getValue(Document.class);
                    mDocuments.add(document);
                }
adapter = new ContactAdapter(getApplicationContext(), mContacts, mAuth);
recyclerView.setAdapter(adapter);

Вот адаптер

@Override
public void onBindViewHolder(@NonNull ContactViewHolder holder, int position) {
    Contact contactCurrent = mContacts.get(position);

    holder.contactName.setText("Name: " + contactCurrent.getName());
    holder.contactPhone.setText("Phone number: " + contactCurrent.getPhone());
}

public static class ContactViewHolder extends RecyclerView.ViewHolder {

    public TextView contactName, contactPhone;
    public ImageButton deleteContact;

    public ContactViewHolder(@NonNull View itemView) {
        super(itemView);

        contactName = itemView.findViewById(R.id.contact_name);
        contactPhone = itemView.findViewById(R.id.contact_phone);
        deleteContact = itemView.findViewById(R.id.delete_contact);
    }
}

Убедитесь, что у mContacts нет повторяющихся контактов.

Cheticamp 09.04.2022 18:45
Основы программирования на Java
Основы программирования на Java
Java - это высокоуровневый объектно-ориентированный язык программирования, основанный на классах.
Концепции JavaScript, которые вы должны знать как JS программист!
Концепции JavaScript, которые вы должны знать как JS программист!
JavaScript (Js) - это язык программирования, объединяющий HTML и CSS с одной из основных технологий Всемирной паутины. Более 97% веб-сайтов используют...
0
1
19
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Ок, просто используйте mDocuments.clear(); перед добавлением данных в mDocuments. См. код ниже.

for (DataSnapshot postSnapshot : snapshot.child(currentUser.getUid()).getChildren()) {
                    mDocuments.clear();
                    Document document = postSnapshot.getValue(Document.class);
                    mDocuments.add(document);
                }
adapter = new ContactAdapter(getApplicationContext(), mContacts, mAuth);
recyclerView.setAdapter(adapter);

Другие вопросы по теме