Я пытаюсь разрешить пользователям ставить свой рейтинг сервиса, и я хочу запретить пользователю добавлять рейтинг дважды, проблема в том, что, когда пользователь уже оценил сервис, а я получаю количество звездочек из базы и местаих в строке рейтинга срабатывает OnRatingBarChaneListener, и это снова добавляет ценность к базе данных.это мой код, пожалуйста, помогите мне.
final DatabaseReference r = database.getReference("rating");
r.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (final DataSnapshot snapshot5 : dataSnapshot.getChildren()){
final Rating rt = snapshot5.getValue(Rating.class);
final String ratingId= snapshot5.getKey();
// Toast.makeText(InfoService.this,key,Toast.LENGTH_SHORT).show();
assert rt != null;
if(!(rt.getId().equals(account.getUid())) && (rt.getIdservice().equals(key))) {
RatingB.setOnRatingBarChangeListener(new RatingBar.OnRatingBarChangeListener() {
@Override
public void onRatingChanged(RatingBar ratingBar, float rating, boolean fromUser) {
String rateId = r.push().getKey();
// Toast.makeText(InfoService.this,"thank you for voting"+key,Toast.LENGTH_SHORT).show();
Rating rate = new Rating(rateId,account.getUid(),key,rating);
r.child(rateId).setValue(rate);
// int stars = Math.round(rating);
RatingB.setRating(rating);
RatingB.setIsIndicator(true);
}
});
}else {
textrate.setText("Votre evaluation");
RatingB.setIsIndicator(true);
RatingB.setRating(rt.getStar());
}
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});