Aller au contenu

Désactiver "dismiss automatique" sur listener de AlertDialog


ant-1

Recommended Posts

Salut tout le monde

Je développe une appli dans laquelle j'utilise une DialogBox.

Cette DialogBox présenterait une liste d'item, et des boutons de validation/annulation de sélection.

Mon problème, c'est qu'à chaque fois que j'appuie sur un item, la DialogBox se ferme (une fois le traitement du code fait dans le listener associé).

Le comportement idéal serait, lors de l'appui sur l'un des items de la liste, de le mettre seulement en surbrillance, puis l'appui sur le bouton "OK" demanderait une confirmation/annulation de la sélection.

Dans le code ci-dessous, le layout "select_file_dialog" est une simple listview.

Si quelqu'un a une idée sur la façon de supprimer ce "dismiss" automatique après l'appui sur un item ou une meilleur idée, je suis preneur!

LayoutInflater factory = LayoutInflater.from(this);
 final View alertDialogView = factory.inflate(R.layout.select_file_dialog, null);
 final String[] m_filesName = this.fileList();
 }
 AlertDialog.Builder builder = new AlertDialog.Builder(this);
 builder.setView(alertDialogView);
 builder.setTitle(R.string.select_file);
 builder.setItems(m_filesName, new DialogInterface.OnClickListener() {
  @Override
  public void onClick(DialogInterface dialog, int index) {
fileName = m_filesName[index];
"code à exécuter......"
  }
 });

Précision : je ne peux pas utiliser le traitement classique des boite de dialogue (onCreateDialog, onPrepareDialog etc...) car en fait je continue le code de quelqu'un d'autre qui a utiliser tout un tas d'interfaces hyper mal foutue et pas du tout personnalisable pour interfacer les dialog dans cette classe. Et supprimer ce système reviendrai à flinguer toute l'architecture de l'appli..... J'ai donc du utiliser des alertDialog

Je vous remercie

Lien vers le commentaire
Partager sur d’autres sites

  • 2 weeks later...

Salut,

A mon avis, si tu veux empêcher ce dismiss il doit falloir stopper la propagation de l'event mais il va te falloir faire un bon paquet de tests avant d'avoir un truc probant.

J'ai pas vraiment une idée claire de ce qu'il faut faire mais plutôt quelques hypothèses (à confirmer ou infirmer en somme ^^) :

- Renvoyer true à la fin du traitement de onClick pour dire que l'event a été traité

- Peut-être, intercepter les touch events et envoyer true à la fin, même s'il n'y a aucun traitement dans ce onTouch

Bref, ce sont des pistes...

Bon courage, tiens-nous au jus (c'est intéressant mais si ça a l'air un peu spécifique) ;)

Lien vers le commentaire
Partager sur d’autres sites

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...