У меня есть коллекция продуктов, и я хочу получать обновления в реальном времени.Это мой код:
query.addSnapshotListener(new EventListener<QuerySnapshot>() {
@Override
public void onEvent(@Nullable QuerySnapshot querySnapshot, @Nullable FirebaseFirestoreException e) {
if (e != null) return;
List<Product> list = new ArrayList<>();
for (DocumentChange documentChange : querySnapshot.getDocumentChanges()) {
switch (documentChange.getType()) {
case ADDED:
Product product = documentChange.getDocument().toObject(Product.class);
list.add(product);
break;
case MODIFIED:
adapter.notifyDataSetChanged();
break;
case REMOVED:
//
break;
}
}
adapter = new ProductAdapter(context, list);
recyclerView.setAdapter(adapter);
}
});
Если цена продукта меняется, и у меня приложение на переднем плане, я вообще не вижу изменения в моем RecyclerView
.Я все еще вижу старую цену, даже если я уведомляю адаптер.Также происходит нечто странное.Если цена десятого продукта изменяется, свиток переходит на первую позицию.
Как я могу увидеть изменения в реальном времени при изменении цены?И как можно остаться на текущей позиции в RecyclerView
при изменении?
Редактировать:
case MODIFIED:
Product modifiedProduct = documentChange.getDocument().toObject(Product.class);
for(Product p : list) {
if(p.getProductName().equals(modifiedProduct.getProductName())) {
list.remove(p);
}
}
list.add(modifiedProduct);
adapter.notifyDataSetChanged();
То же самое происходит.Все еще видя старую цену.