0
votes

Comment s'assurer que plusieurs clics sur un seul bouton ne sont-ils pas dupliquent le résultat?

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);
                    }
                });



    }


0 commentaires

3 Réponses :


1
votes

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é.


0 commentaires

0
votes

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;


0 commentaires

0
votes

Vous pouvez utiliser btn.setéenabled (false); & btn.setenabled (true); pour contrôler plusieurs clics


0 commentaires