Ich versuche, eine andere alternative Lösung zu finden, um zu überprüfen, ob der Benutzer auf dem Post bewertet hat.Bewertungsleiste Android Alternative Methode für OnRatingBarChangeListener?
Das Problem ist, dass wenn ich OnRatingBarChangeListener verwenden ein anderer Benutzer abstimmen und ändern Sie die Bewertung, die das Ereignis ausgelöst wird.
I OnClickListener und OnTouchListener ohne wirklichen Erfolg versucht haben, weil sie die ursprüngliche Methode überschreiben und interagieren nicht korrekt mit dem Rating bar ...
Irgendwelche Vorschläge?
if (ratingSimplePost.getDidRate() == true) {
ratingViewHolder.starRating.setRating((float)ratingSimplePost.getAverageRating());
ratingViewHolder.starRating.isIndicator();
}else if(ratingSimplePost.getDidRate() == false){
ratingSimplePost.setDidRate(true);
ratingViewHolder.starRating.setOnRatingBarChangeListener(new SimpleRatingBar.OnRatingBarChangeListener() {
@Override
public void onRatingChanged(SimpleRatingBar simpleRatingBar, float rating, boolean fromUser) {
if (ratingViewHolder.starRating.getRating() == 0) {
} else {
ratingViewHolder.starRating.setRating(ratingViewHolder.starRating.getRating());
double avgSum = ratingSimplePost.getAverageRating() * ratingSimplePost.getParticipantCount();
double myRating = ratingViewHolder.starRating.getRating();
myRating = (Math.round(myRating * 100));
myRating = myRating/100;
double newRating = (avgSum + myRating)/(ratingSimplePost.getParticipantCount() + 1);
newRating = (Math.round(newRating * 100));
newRating = newRating/100;
ParseQuery<ParseObject> updateRating = ParseQuery.getQuery("Posts");
updateRating.whereEqualTo("objectId", ratingSimplePost.getPostId());
final double finalNewRating = newRating;
final double finalMyRating = myRating;
ratingSimplePost.setAverageRating(newRating);
updateRating.findInBackground(new FindCallback<ParseObject>() {
public void done(List<ParseObject> objects, ParseException e) {
if (e == null) {
for (int i = 0; i < objects.size(); i++) {
ParseObject object = objects.get(i);
object.put("AvgRating", finalNewRating);
ArrayList<Double> ratingValues = (ArrayList<Double>) object.get("Ratings");
ratingValues.add((double) finalMyRating);
object.put("Ratings", ratingValues);
ratingSimplePost.setNewRating(finalNewRating);
ArrayList<String> partList = (ArrayList<String>) object.get("Participants");
partList.add(ParseUser.getCurrentUser().getUsername());
object.put("Participants", partList);
object.saveInBackground();
ratingViewHolder.starRating.setRating((float) finalNewRating);
}
}
}
});
}
}
});
Vielen Dank! Du bist toll! –