Problème avec bouton Ok/annuler
Bonjour.
J'ai un petit problème, pas bien compliqué je pense, mais je ne parviens pas à trouver de l'aide sur internet.
Dans mon activity, j'ai une listeView. Dans cette liste view, si on fait un long clique sur un item, je souhaite le supprimer.
Mais avant, je veux afficher un message de confirmation.
Afin d'interpréter le choix de l'utilisateur, j'utilise une variable booléenne (globale) qui vaut "true" s'il clique sur ok, "false" sinon.
Ensuite j'ai un bloc "if" qui réalise une action si la variable vaut "true".
Comme je supprime un item, je refait appel a mon activité courante afin de rafraichir la liste.
Jusque là pas bien compliqué.
Le problème c'est que l'action en question ne se réalise pas directement après l'appui sur ok, mais au prochain appui long sur un item.
Comment puis-je faire pour que cette action se réalise directement à la suite de l'appui sur "ok" ? Par exemple ajouter un "wait" entre le clique et la condition if.
Voici la partie de mon code qui correspond à un lonclick sur un item. La variable "ok" est déclarée en global initialisée à "false".
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80
|
// ListView Item Click Listener (Lorsque l'on clique sur la liste)
list.setOnItemLongClickListener(new OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> parent, View view,
int positionIni, long id) {
int position = positionIni-1;
//Ouverture de la BDD
ticketBDD.open();
//Récupération de l'objet ticket
Object tidi = security.get(position);
int indexTidi = security.indexOf(tidi)+1;
//Conversion de l'objet en String, utilisation de Regex pour trouver l'ID puis conversion de l'ID en int
String vect=(security.get(position)).toString();
String idt = findMatch(vect);
final int idts = Integer.parseInt(idt);
//on créé une boite de dialogue
AlertDialog.Builder adb = new AlertDialog.Builder(ticketDeleteActivity.this);
//on attribue un titre à notre boite de dialogue
adb.setTitle("Sélection Item N°"+indexTidi+" ID : "+idts);
//on insère un message à notre boite de dialogue, et ici on affiche le titre de l'item cliqué
adb.setMessage("DESCRIPTION : "+security.get(position));
//on indique que l'on veut le bouton ok et annuler à notre boite de dialogue
adb.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
ok = true;
}
});
adb.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
//Affichage d'un toast qu'aucun ticket n'a été supprimé
Toast.makeText(getApplicationContext(),
"No ticket deleted", Toast.LENGTH_SHORT)
.show();
}
});
//on affiche la boite de dialogue
adb.show();
if (ok==true){
//Suppression du ticket (A remplacer par son ID et non la posiotion de son item)
ticketBDD.removeTicketWithID(idts);
//Afficheage d'un toast de confirmation de suppression
Toast.makeText(getApplicationContext(),
"Ticket "+idts+" deleted", Toast.LENGTH_SHORT)
.show();
//Rafraichissement de la vue après suppression d'un ticket
Intent intent = new Intent(ticketDeleteActivity.this, ticketDeleteActivity.class);
startActivity(intent);
}
ticketBDD.close();
return true;
}
}); |
Merci par avance si quelqu'un peut m'éclairer.