public static void initializeRatingBar( @NonNull final Geocache cache, final View parentView, @Nullable final OnRatingChangeListener changeListener) { if (GCVote.isVotingPossible(cache)) { final RatingBar ratingBar = ButterKnife.findById(parentView, R.id.gcvoteRating); final TextView label = ButterKnife.findById(parentView, R.id.gcvoteLabel); ratingBar.setVisibility(View.VISIBLE); label.setVisibility(View.VISIBLE); ratingBar.setOnRatingBarChangeListener( new OnRatingBarChangeListener() { @Override public void onRatingChanged( final RatingBar ratingBar, final float stars, final boolean fromUser) { // 0.5 is not a valid rating, therefore we must limit final float rating = GCVote.isValidRating(stars) ? stars : 0; if (rating < stars) { ratingBar.setRating(rating); } label.setText(GCVote.getDescription(rating)); if (changeListener != null) { changeListener.onRatingChanged(rating); } } }); ratingBar.setRating(cache.getMyVote()); } }