J'ai une ListView qui permettra à l'utilisateur appuyez longuement sur un élément pour obtenir un menu contextuel. Le problème, je vais avoir, c'est dans la détermination ListItem
ils ont très-pressé. J'ai essayé de faire ceci:
myListView.setOnCreateContextMenuListener(new OnCreateContextMenuListener() {
@Override public void onCreateContextMenu(ContextMenu menu, final View v, ContextMenuInfo menuInfo) {
menu.add("Make Toast")
.setOnMenuItemClickListener(new OnMenuItemClickListener() {
@Override public boolean onMenuItemClick(MenuItem item) {
String toastText = "You clicked position " + ((ListView)v).getSelectedItemPosition();
Toast.makeText(DisplayScheduleActivity.this, toastText, Toast.LENGTH_SHORT).show();
return true;
}
});
}
});
mais il se bloque jusqu'à ce qu'une ANR pop-up. Je soupçonne qu'après le menu est créé l' ListItem
n'est plus sélectionnée.
Il semble que vous pouvez surveiller pour les clics ou de longue clics, puis d'enregistrer l'élément cliqué là:
mArrivalsList.setOnItemLongClickListener(new OnItemLongClickListener() {
@Override public boolean onItemLongClick(AdapterView<?> parent, View v, int position, long id) {
// record position/id/whatever here
return false;
}
});
mais qui se sent majorly kludgey pour moi. Quelqu'un at-il de meilleures solutions pour cela?