J'ai développé un bouton similaire sur Post, et quand il clique sur, il ajoute 1 chaque fois. Je souhaite seulement une fois que l'utilisateur a cliqué sur le bouton, il ne compte que d'une seule fois, mais lorsqu'il est cliqué plusieurs fois, le nombre augmente par le même utilisateur et qui n'est pas censé arriver?
Je veux juste un clic, une mise à jour du compteur par Le même utilisateur, non plus p>
Comment vais-je continuer? p>
J'utilise les transactions dans Firestore pour terminer l'opération P>
private void transactionlPostUserl1() { Log.d(TAG,"hello4"); final DocumentReference PostUserRef = db.collection("users").document(PostAuthorID); db.runTransaction(new Transaction.Function<Void>() { @Override public Void apply(Transaction transaction) throws FirebaseFirestoreException { DocumentSnapshot documentSnapshot2 = transaction.get(PostUserRef); long l11 = documentSnapshot2.getLong("l2"); { transaction.update(PostUserRef, "l2", l11+1); return null; } } }).addOnSuccessListener(new OnSuccessListener<Void>() { @Override public void onSuccess(Void result) { Log.d(TAG, "Transaction success: " + result); } }) .addOnFailureListener(new OnFailureListener() { @Override public void onFailure(@NonNull Exception e) { Log.w(TAG, "Transaction failure.", e); } }); }
3 Réponses :
Enregistrez l'identifiant de chaque utilisateur qui a aimé chaque poste, puis vérifiez si cette personne aime déjà? Ensuite, vous pouvez simplement compter la quantité de personnes qui ont aimé. P>
Vous pouvez faire quelque chose comme ceci:
boolean canClick = true; // inside the click event if (canClick) canClick = false; // when the click event ends: canClick = true;
Vous pouvez utiliser btn.setéenabled (false); code> &
btn.setenabled (true); code> pour contrôler plusieurs clics p>