Wie kann ich Kontrollieren, auf MultiChoice AlertDialog

Ich bin mit Dialog in meiner app, um Benutzern zu erlauben, mehrere Auswahl, 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 Abfragen:

  1. Wie ich ausgewählt habe, Rot und Lila

    (dann in TextView erste Ausgabe: Red, Purple,)

    Zunächst möchte ich Entferne Komma (, die immer mit dem letzten Wert)

  2. Ich bereits ausgewählt Rot und Lila, wenn ich wieder öffnen-dialog nicht immer rot und lila als standardmäßig aktiviert (Wie kann ich den Zustand sichern)enter code here, und als ein Ergebnis, wenn ich wieder die Auswahl dieser (Rot und Lila), die zwei Elemente, immer jedes Element zweimal in einem TextView

InformationsquelleAutor Oreo | 2015-09-01
Schreibe einen Kommentar