Android Studio: Rating not displaying in TextView after I select stars in ratingBar

128 Views Asked by At

I have a simple meal rater program that lets you rate a dish. I select number of stars and then select save. The number of stars selected should display as a float in rating TextView. Currently it will only display 0.0 in rating TextView.

How do I get the number of stars to display in the TextView as a float?

RatingBar

Rating not displaying in TextView

MealRater Dialog

MainActivity

MainActivity

public class MainActivity extends AppCompatActivity implements MealRaterDialog.GetRatingListener{

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initChangeRating();
        final RatingBar ratingRatingBar = (RatingBar) findViewById(R.id.ratingRatingBar);
        Button submitButton = (Button) findViewById(R.id.buttonSave);
        final TextView ratingDisplayTextView = (TextView) findViewById(R.id.rating);
    }

    private void initChangeRating(){
        Button changeRating = findViewById(R.id.btnRateMeal);

        changeRating.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                FragmentManager fm = getSupportFragmentManager();
                MealRaterDialog mealRaterDialog = new MealRaterDialog();
                mealRaterDialog.show(fm, "Rating");
            }
        });
    }

    @Override
    public void didFinishDatePickerDialog(float rating) {
//put rating in textview.  have a float instead of calendar like in contactlist
        TextView showRating = findViewById(R.id.rating);
        //showRating.toString();
        showRating.setText(String.valueOf(rating));
        Log.d(TAG, "didFinishDatePickerDialog: " + String.valueOf(rating));
        //showRating.setText(float, rating);
        //showRating.setText(TextView.BufferType.EDITABLE, rating);


    }
}

MealRater Dialog

public class MealRaterDialog extends DialogFragment {
    float rating;

    public interface GetRatingListener{
        void didFinishDatePickerDialog(float rating);
    }

    public MealRaterDialog()
    {

    }

    @Override
    public View onCreateView(LayoutInflater inflater,
                             ViewGroup container,
                             Bundle savedInstanceState) {

        // Create the view from the the xml.
        final View view = inflater.inflate(R.layout.select_rater, container);
        getDialog().setTitle("Save");

        Button selectButton = view.findViewById(R.id.buttonSave);
        //Button cancelButton = view.findViewById(R.id.buttonCancel);

        selectButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //float rating = ratingRatingBar.getRating();
                saveItem(rating);
            }
        });
        return view;
    }

    private void saveItem(float rating) {
        GetRatingListener activity = (GetRatingListener)getActivity();
        activity.didFinishDatePickerDialog(rating);
        getDialog().dismiss();
    }
}
1

There are 1 best solutions below

0
David_Dev On

Code is missing from selectButton.setOnClickListener in MealRater Dialog.

selectButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //code below was missing
                RatingBar ratingBar = view.findViewById(R.id.ratingRatingBar); 
                float rating = ratingBar.getRating();
                saveItem(rating);
            }
        });
        return view;