classicalMechanicsRef.addListenerForSingleValueEvent(valueEventListener);
Firebase предоставляет 3 типа прослушивателей событий. Здесь вы используете прослушиватель для события с одним значением.
Если вы просто хотите прочитать значение один раз, используйте ref.addListenerForSingleValueEvent()
.
Здесь вы хотите обновить список из firebase, вам нужно снова получить список из firebase и передать его адаптеру.
Но поскольку это событие firebase, оно, очевидно, удалит данные из базы данных firebase, так что вы сможете удалить элемент из своего окна повторного просмотра.
Плохой подход
Если несколько пользователей не обновляют один и тот же список, вы можете использовать ValueEventListener
reference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
// set recyclverview from data
}
@Override
public void onCancelled(DatabaseError databaseError) {
// error handling
}
});
Этот подход плох, потому что если какой-либо другой пользователь внес изменения в данные, то ваш onDataChange()
будет вызываться снова и снова, и ваш список будет обновляться.
Хороший подход
- Зарегистрируйтесь с помощью
addListenerForSingleValueEvent
.
- Передайте все предметы адаптеру утилизатора.
- Если элемент будет удален, позвоните
removeValue();
по ссылке
- Снова позвоните в firebase, чтобы проверить, является ли удаленным ключ
null
, если он нулевой, теперь мы можем обновить наш recyclerview
.
- Используйте описанный ниже метод для удаления элемента из
RecyclerView
.
Прежде всего, элемент должен быть удален из списка!
mDataSet.remove(getAdapterPosition());
, то:
notifyItemRemoved(getAdapterPosition());
notifyItemRangeChanged(getAdapterPosition(),mDataSet.size());