Итак, я тестирую 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);
}
}
Ок, просто используйте 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);
Убедитесь, что у
mContacts
нет повторяющихся контактов.