J'ai ce code pour montrer un dialogue avec les options singlechoice (radio).
AlertDialog ad = new AlertDialog.Builder(this)
.setCancelable(false)
.setIcon(R.drawable.alert_dialog_icon)
.setTitle(R.string.choose_one)
.setSingleChoiceItems(seq, pos,null)
.setPositiveButton( R.string.ok, new DialogInterface.OnClickListener() {
public void onClick( DialogInterface dialog, int whichButton)
{
// dialog dismissed
}
}).create();
Comment puis-je obtenir le choix qui a été sélectionné?
Je sais que ceci est un ancien post, mais je viens de le découvrir et j'ai trouvé que cette solution semblait un peu plus simple que ce qui a été posté ici.
Vous pouvez juste faire comme ça:
Dans votre gestionnaire onClick()
sur le bouton de dialogue positif, ajoutez le code suivant:
ListView lw = ((AlertDialog)dialog).getListView();
Object checkedItem = lw.getAdapter().getItem(lw.getCheckedItemPosition());
J'ai essayé d'utiliser ListView.setSelection(int)
mais cela n'a jamais fonctionné comme prévu. J'ai donc décidé d'utiliser View.setTag () pour stocker temporairement la position sélectionnée.
.setSingleChoiceItems(adapter, -1,
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
ListView lv = ((AlertDialog)dialog).getListView();
lv.setTag(new Integer(which));
}
})
La balise est alors facilement accessible après un clic sur un bouton.
.setPositiveButton(R.string.button_text,
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
ListView lv = ((AlertDialog)dialog).getListView();
Integer selected = (Integer)lv.getTag();
if(selected != null) {
// do something interesting
}
}
})
Je crois que vous utilisez une OnClickListener
pour setSingleChoiceItems()
, pour écouter chaque élément sélectionné. puis une fois que l'utilisateur appuie sur OK, vous définissez cet élément en pierre. Pour le moment, vous ne faites que passer à null, donc rien ne vous empêche de choisir l’article sélectionné.
1). créer un tableau.
final ArrayList<String> arrData = new ArrayList<String>();
2) ajouter des données au tableau que vous avez créé.
if (cursor != null) {
if (cursor.moveToFirst()) {
do {
arrData .add(cursor.getString(1));
// (1 = int columnIndex)
} while (cursor.moveToNext());
}
}
3) obtenir des données comme celle-ci.
public void onClick(DialogInterface dialog, int item) {
Log.d("Selected", arrData.get(item) + "");
}
4) c'est tout :)
Vous pouvez faire comme ceci dans onClick () method
final AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setTitle(R.string.edit_set_waiting_period)
.setItems(R.array.str_set_waiting_period, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
// The 'which' argument contains the index position
// of the selected item
L.e("selectedItmes", which + "");
ListView lw = ((AlertDialog) dialog).getListView();
Object checkedItem = lw.getAdapter().getItem(which);
L.e("checkedItem", checkedItem.toString() + "");
}
});
builder.show();
la position de l'élément sélectionné est déjà indiquée dans la méthode onClick. afin que nous puissions accéder directement au tableau et obtenir l'élément sélectionné sans aucun problème . dans ce cas: seq [qui] sera l'élément sélectionné