Когда я запрашиваю один документ Ссылка из коллекции повторяется несколько раз. То есть, когда я начинаю запрашивать пример документа, например, имя моей подгруппы, например: "Напитки", я получаю правильные детали документа запроса, Но когда моя подпрограмма -коллекция меняет имя, например: "Фрукты" я получаю результат, но мой запрос повторяется несколько раз. я не знаю, почему из-за общего предпочтения (использовал предпочтение для отправки выбранного идентификатора коллекции из основного занятия в это) или из-за чего-то другого, не смог найти нужную помощь, спасибо.
Мой код:
private void GettingQuantity() {
Log.d(TAG, "GettingQuantity: Bstarted");
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
String MainCatId = preferences.getString("Main_Id",null);
String MainCatTittle = preferences.getString("Main_tittle",null);
String SubCatId = preferences.getString("Sub_Main_Id",null);
String SubCatTittle = preferences.getString("Sub_Main_tittle",null);
final String item_id = preferences.getString("ItemID",null);
final int oldValue = preferences.getInt("OldValue",0);
final int newValue = preferences.getInt("NewValue",0);
//sharing to seperate cart node in store
FirebaseFirestore dQ = FirebaseFirestore.getInstance();
DocumentReference ProductRef = dQ.collection("HomeFeed")
.document("5HEkE0ac7sMa7Gjnvf3E")
.collection("MainCategory")
.document(MainCatId)
.collection(MainCatTittle)
.document(SubCatId)
.collection(SubCatTittle)
.document(item_id);
ProductRef.addSnapshotListener(new EventListener<DocumentSnapshot>() {
@Override
public void onEvent(@Nullable DocumentSnapshot documentSnapshot, @Nullable FirebaseFirestoreException e) {
Attachment attachment = documentSnapshot.toObject(Attachment.class);
Log.d(TAG, "onEvent: Bstarted");
if (newValue == 1 && oldValue == 0) {
FirebaseFirestore db = FirebaseFirestore.getInstance();
CollectionReference CartRef = db.collection("Cart");
Attachment cartItem = new Attachment();
String cart_id;
cart_id = item_id;
cartItem.setItem_id(cart_id);
cartItem.setItem_brand(attachment.getItem_brand());
cartItem.setItem_name(attachment.getItem_name());
cartItem.setItem_price(attachment.getItem_price());
cartItem.setQuantity(attachment.getQuantity());
cartItem.setItem_discount(attachment.getItem_discount());
cartItem.setItem_quantity(newValue);
cartItem.setUrls(attachment.getUrls());
Log.d(TAG, "passData: the cart Id: " + cart_id);
CartRef.document(cart_id).set(cartItem).addOnSuccessListener(new OnSuccessListener<Void>() {
@Override
public void onSuccess(Void aVoid) {
Toast.makeText(mContext, "Added to cart", Toast.LENGTH_SHORT).show();
}
})
Вывод моего журнала, если вы видите, что я поместил простой журнал, где OnEvent печатается несколько раз:
Первый журнал, результаты которого были ожидаемыми
{ 2020-04-13 23:40:08.039 17940-17940/com.example.myconsumer D/ProductItemsActivity: onReceive: Bstarted
2020-04-13 23:40:08.039 17940-17940/com.example.myconsumer D/ProductItemsActivity: GettingQuantity: Bstarted
2020-04-13 23:40:08.063 17940-17940/com.example.myconsumer D/ProductItemsActivity: onEvent: Bstarted }
Второй журнал где зациклен несколько раз
{ 2020-04-13 23:40:55.062 17940-17940/com.example.myconsumer D/ProductItemsActivity: onReceive: Bstarted
2020-04-13 23:40:55.062 17940-17940/com.example.myconsumer D/ProductItemsActivity: GettingQuantity: Bstarted
2020-04-13 23:40:55.064 17940-17940/com.example.myconsumer D/ProductItemsActivity: onReceive: Bstarted
2020-04-13 23:40:55.064 17940-17940/com.example.myconsumer D/ProductItemsActivity: GettingQuantity: Bstarted
2020-04-13 23:40:55.076 17940-17940/com.example.myconsumer D/ProductItemsActivity: onEvent: Bstarted
2020-04-13 23:40:55.083 17940-17940/com.example.myconsumer D/ProductItemsActivity: onEvent: Bstarted }