Как убедиться, что несколько нажатий на одну кнопку не дублируют результат? - PullRequest
0 голосов
/ 23 сентября 2019

Я разработал кнопку «Мне нравится» в записи, и когда она щелкает, она добавляет 1 каждый раз.Я хочу только один раз, когда пользователь нажал кнопку, она считается только до одного, но когда она нажимается несколько раз, количество увеличивается одним и тем же пользователем, а это не должно происходить?

Я просто хочу один щелчок, одинобновление счетчика тем же пользователем, больше нет

как мне действовать?

Я использую транзакции в firestore для завершения операции

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 ]

2 голосов
/ 23 сентября 2019

Сохраните идентификатор каждого пользователя, который понравился для каждого сообщения, а затем проверьте, нравится ли это человеку?Тогда вы можете просто посчитать количество людей, которые понравились.

1 голос
/ 23 сентября 2019

Вы можете использовать btn.setEnabled(false); & btn.setEnabled(true); для управления несколькими нажатиями

1 голос
/ 23 сентября 2019

Вы можете сделать что-то вроде этого:

 boolean canClick = true;

        // inside the click event 
        if (canClick)
        canClick = false;

        // when the click event ends:
        canClick = true;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...