Context menu et listview impossible de récupérer la position de l'item de la listView cliqué
Salut à tous,
Alors voilà, j'ai une liste d'item contenu dans une arraylist, et j'ai créer un menu d'options et un context menu.
Je me suis rendu compte que le context menu ne tenait pas compte de l'item sur lequel je cliquait. En effet si je met une action sur une des options du menu, elle s'apliquera à toute mon arraylist, et pas uniquement à l'item sur lequel j'ai cliqué pour faire apparaître le menu.
voici mon code pour ce menu :
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
| public void onCreateContextMenu(ContextMenu menu_item,View v,ContextMenuInfo menuInfo)
{
super.onCreateContextMenu(menu_item, v, menuInfo);
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.menu_itemlist, menu_item);
}
public boolean onContextItemSelected(MenuItem item)
{
switch (item.getItemId()) {
case R.id.see_item:
Toast.makeText(this, "drawing of detail's alarm", Toast.LENGTH_SHORT).show();
this.lancementDetailAlarm(0);
return true;
case R.id.ack_item:
if (varack == 0){
varack = 1;
ListView list = (ListView)findViewById(R.id.listalarme);
AlarmeAdapter adapter = (AlarmeAdapter)list.getAdapter();
adapter.ackbutton.setVisibility(0); // n'efface pas l'étoile
adapter.notifyDataSetChanged();
Toast.makeText(this, "this alarm is acknowledged", Toast.LENGTH_SHORT).show();
}
else {
Toast.makeText(this, "you have already ack this alarm", Toast.LENGTH_SHORT).show();
}
return true;
}
return super.onContextItemSelected(item);
} |
Si on prend l'exemple de "ack_item" j'aimerais lorsque je le choisi que seul un élèment de l'arraylist est la variable varack qui passe à 1, or tous les élèment passe cette variable à un car aprés j'affiche toujours le deuxième message toast.
Je ne sais pas si ce que je veux est possible en gardant un seul menu? il faut que j'arrive à récupérer la position des item de mon arraylist et à en faire un paramètre de mon menu mais comment?