У меня есть два фрагмента, один из них корзина и на нем стоит AddChildEventListener, то есть он постоянно слушает состояние БД и при добавлении данных в корзину, то есть со второго фрагмента, фрагмент корзины сразу пытается обновить список, а из - за того что за это время успевает придти только два поля в базу данных, вместо восьми, слушатель не может загрузить несуществующие данные и приложение вылетает. Как решить данный вопрос? Листинги ниже
Добавление в базу:
String key = mReference.child("basket").push().getKey();
mReference.child("basket").child(key).child("dishId").setValue(mList.get(position).id);
mReference.child("basket").child(key).child("restaurantId").setValue(mList.get(position).restaurantId);
mReference.child("basket").child(key).child("userId").setValue(userRef);
mReference.child("basket").child(key).child("weight").setValue(mList.get(position).weight);
mReference.child("basket").child(key).child("title").setValue(mList.get(position).title);
mReference.child("basket").child(key).child("composition").setValue(mList.get(position).composition);
mReference.child("basket").child(key).child("price").setValue(mList.get(position).price);
Слушатель:
private void updateList() {
mReference.child("basket").addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s) {
mList.add(dataSnapshot.getValue(Basket.class));
mAdapter.notifyDataSetChanged();
}
@Override
public void onChildChanged(DataSnapshot dataSnapshot, String s) {
Basket model = dataSnapshot.getValue(Basket.class);
int index = getItemIndex(model);
mList.set(index, model);
mAdapter.notifyItemChanged(index);
}
@Override
public void onChildRemoved(DataSnapshot dataSnapshot) {
Basket model = dataSnapshot.getValue(Basket.class);
int index = getItemIndex(model);
mList.remove(index);
mAdapter.notifyItemRemoved(index);
}
@Override
public void onChildMoved(DataSnapshot dataSnapshot, String s) {
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}