Wie steuere ich MultiChoice AlertDialog?

Ich verwende Dialog in meiner App, um dem Benutzer die Möglichkeit zu geben, eine Mehrfachauswahl zu treffen. Hier ist mein Code:

    btn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            // Build an AlertDialog
            AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);

            // String array for alert dialog multi choice items
            String[] colors = new String[]{
                    "Red",
                    "Green",
                    "Blue",
                    "Purple",
                    "Olive"
            };

            // Boolean array for initial selected items
            final boolean[] checkedColors = new boolean[]{
                    false, // Red
                    false, // Green
                    false, // Blue
                    false, // Purple
                    false // Olive

            };

            // Convert the color array to list
            final List<String> colorsList = Arrays.asList(colors);

            // Set multiple choice items for alert dialog

            builder.setMultiChoiceItems(colors, checkedColors, new DialogInterface.OnMultiChoiceClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which, boolean isChecked) {

                    // Update the current focused item's checked status
                    checkedColors[which] = isChecked;

                    // Get the current focused item
                    String currentItem = colorsList.get(which);

                    // Notify the current action
                    Toast.makeText(getApplicationContext(),
                            currentItem + " " + isChecked, Toast.LENGTH_SHORT).show();
                }
            });

            // Specify the dialog is not cancelable
            builder.setCancelable(false);

            // Set a title for alert dialog
            builder.setTitle("Your preferred colors?");

            // Set the positive/yes button click listener
            builder.setPositiveButton("OK", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    // Do something when click positive button
                    tv.setText("Your preferred colors..... \n");
                    for (int i = 0; i<checkedColors.length; i++){
                        boolean checked = checkedColors[i];
                        if (checked) {
                            tv.setText(tv.getText() + colorsList.get(i) + ", ");
                        }
                    }
                }
            });

            // Set the negative/no button click listener
            builder.setNegativeButton("No", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    // Do something when click the negative button
                }
            });

            // Set the neutral/cancel button click listener
            builder.setNeutralButton("Cancel", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    // Do something when click the neutral button
                }
            });

            AlertDialog dialog = builder.create();
            // Display the alert dialog on interface
            dialog.show();
        }
    });

Und ich habe zwei Fragen:

Wie ich Rot und Lila ausgewählt habe

(dann in TextView Ausgabe wie folgt:Red, Purple,)

Zunächst möchte ich das Komma entfernen (das mit dem letzten Wert erhalten wird)

Ich habe bereits Rot und Lila ausgewählt. Wenn ich den Dialog erneut öffne, werden standardmäßig nicht die Farben Rot und Lila angezeigt. (Wie kann ich den Status speichern?)enter code here, und als Ergebnis, wenn ich wieder diese (rot und lila) zwei Elemente auswähle, bekommen jedes Elementtwice in einer Textansicht

Antworten auf die Frage(4)

Ihre Antwort auf die Frage