Android: Sélectionner des éléments dans une multi-sélection de ListView à l'intérieur de AlertDialog
Je suis nouveau sur le développement android et éprouvent de la difficulté à sélectionner certains éléments dans une liste hébergé par un alertdialog. Dans le code ci-dessous, lv.setItemChecked ne fonctionne pas comme listview n'a pas été généré encore, alors je me demande si il n'y a aucun contrôle ListView ou AlertDialog événement qui confirme ce point de vue a été généré.
String [] values = {"a","b","c"};
ArrayAdapter<String> adp = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_multiple_choice, values);
ListView lv = new ListView(this);
lv.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
lv.setOnItemClickListener(this);
lv.setAdapter(adp);
AlertDialog.Builder bldr = new AlertDialog.Builder(this);
bldr.setTitle("Select");
bldr.setView(lv);
bldr.setPositiveButton("Done",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
handleDone();
}
});
bldr.setNegativeButton("Cancel",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
handleCancel();
}
});
final Dialog dlg = bldr.create();
dlg.show();
Jamais l'esprit, je l'ai eu. J'ai été l'appel de lv.setItemChecked(0, true) juste après le lv.setAdapter (). Une fois que je l'ai déplacé après la dlg.show(), il a travaillé comme un charme.
OriginalL'auteur user2419168 | 2013-11-16
Vous devez vous connecter pour publier un commentaire.
Et vous obtiendrez quelque chose comme ceci:
Si vous voulez vous rappeler ou afficher le dernier élément sélectionné, il suffit de changer le setItems méthode pour définir setSingleChoiceItems() ou setMultiChiceItems(). À l'aide de setSingleChoiceItems() est facile, il suffit de passer d'autres paramètres (indice de sélection, si tu ne veux pas fixé, passer -1):
À haut extrait, vous aurez quelque chose comme ceci
Si vous voulez un multichoose, vous devez changer de méthode, et le deuxième paramètre de maintenant seront pas un nombre entier, doit être un booléen tableau, par cette façon, vous allez définir l'id de n'importe quelle option est activée ou non:
Le résultat sera ce:
La façon d'appeler un des trois exemples est: est-ce
Si vous connaissez espagnol ce guide vous aidera à: Guide complet pour AlertDialogs ou tout simplement obtenir l'exemple complet ici, dans GitHub
OriginalL'auteur Leonardo Sapuy
C'est un simple copier-dernière solution. Remplacer le
list
variable avec votre liste de tableaux et vous êtes bon pour aller. Espérons que cette aide.OriginalL'auteur Sermilion
J'ai trouvé les bonnes Solutions:
OriginalL'auteur Sufiyan Ansari