Comment puis-je Contrôler sur MultiChoice AlertDialog
Je suis en utilisant la boîte de Dialogue dans mon application pour permettre à l'utilisateur de faire une sélection multiple, Voici mon 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();
}
});
Et j'ai deux requêtes:
-
Comme j'ai choisi le Rouge et le Violet
(TextView l'obtention de la sortie comme ceci:
Red, Purple,
)Tout d'abord, je voudrais enlever la virgule (qui devient avec la dernière valeur)
-
J'ai déjà choisi le Rouge et le Violet, lorsque j'ai à nouveau ouvrir la boîte de dialogue de ne pas obtenir le rouge et le violet, tel que sélectionné par défaut (Comment puis-je économiser de l'état)
enter code here
, et comme un résultat, quand je suis de nouveau la sélection de ces (Rouge et Violet) deux éléments, l'obtention de chaque article deux fois dans un TextView
OriginalL'auteur Oreo | 2015-09-01
Vous devez vous connecter pour publier un commentaire.
Essayez de mettre à jour votre textview après la boucle
Et si votre boucle d'itération atteint la longueur de la
checkedcolors
alors ne pas ajouter une virgule.Yor textview sera mis à jour qu'une seule fois, de sorte que vous ne sera pas obtenir de chaque élément deux fois dans le TextView.
Pour l'enregistrement de l'état, vous devez utiliser
SharedPreference
.Pour l'enregistrement de préférence dans l'utilisation de cette
Et pour récupérer
Content d'avoir pu aider 🙂
pouvez-vous m'aider dans la création de l'Étape Vues -- comme l'Étape 1 form > Étape 2 et l'Étape 3 (Terminer) ?
Les étapes pour imlementing la
SharedPreference
??pas de @Boss Comme dans de nombreuses applications de créer un compte ou un rendez-vous ou pour réserver une salle, nous avons à remplir trois formes différentes (Étape 1 - Profil) > (Étape 2 de la Réservation) > (Étape 3 : Examen de Détail) j'espère que maintenant vous pouvez comprendre mon exigence
OriginalL'auteur Emil
Veuillez essayer ceci et améliorer la structure de votre code, de sorte qu'il peut être géré efficacement.
Résoudre tous vos requêtes :
1. Comme j'ai choisi le Rouge et le Violet
=> Vérifiez l'index de l'élément, Si c'est le dernier de ne pas les attacher par des virgules.
2. J'ai déjà choisi le Rouge et le Violet, lorsque j'ai à nouveau ouvrir la boîte de dialogue de ne pas obtenir le rouge et le violet, tel que sélectionné par défaut (Comment puis-je économiser de l'état)
=> enregistrer l'état à l'aide de vo dans votre tableau.Il sera enregistré jusqu'à ce que votre activité n'est pas détruit.
3. quand je suis de nouveau la sélection de ces (Rouge et Violet) deux éléments, l'obtention de chaque article deux fois dans un TextView
=> Effacer la liste, de sorte que les valeurs n'obtenez pas dupliqué.
pouvez-vous m'aider dans la création de l'Étape Vues -- comme l'Étape 1 form > Étape 2 et l'Étape 3 (Terminer)
Comme dans de nombreuses applications de créer un compte ou un rendez-vous ou pour réserver une salle, nous avons à remplir trois formes différentes (Étape 1 - Profil) > (Étape 2 de la Réservation) > (Étape 3 : Examen de Détail) j'espère que maintenant vous pouvez comprendre mon exigence @MamataGelanee
ma malchance il ya quelques jours practo a l'aide, mais maintenant, ils ont enlevé .. je suis à la recherche d'image pour plus de clarté
C'est une excellente réponse. Très utile, merci.
OriginalL'auteur AndiGeeky