Ich möchte einige Daten in jedem Element in einem Popup-Menü speichern. Alle Elemente werden in einer for-Schleife basierend auf Ergebnissen, die von einem Feed zurückgegeben werden, programmatisch aufgeblasen. Im folgenden Beispiel verwende ich HashMap
storedOption
, um die Daten jedes Elements mit den Schleifenindizes als Schlüssel zu speichern. Aber ich muss einen Weg finden, um die Position des ausgewählten Artikels in onMenuItemClick
zu bekommen, so dass ich die Daten von storedOption
abrufen kann. Kann mir jemand sagen, wie ich das mache? Neben dem folgenden Versuch habe ich auch versucht item.getOrder()
, aber es gibt immer 0 zurück, unabhängig davon, wie viele Elemente es im Menü hat.Abrufen der Position des ausgewählten Elements in Android-Popup-Menü-Klasse
public DynamicPopUpMenu{
private Map<String,FeatureList> storedOption = new HashMap();
public void main(final Context context,List<FeatureList> featureList){
int count = 0;
PopupMenu menu = new PopupMenu(context, featureList);
for(FeatureList f:featureList) {
MenuItem item = menu.getMenu().add(f.key);
storedOption.put(count, f);
count++;
}
menu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
public boolean onMenuItemClick(MenuItem item) {
AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) item.getMenuInfo();
int position = info.position;
new ShowToast(context,Integer.toString(position)); // show position in a toast
return true;
}
});
menu.show();
}
}
Was ist das 'value' in diesem' ShowToast'? – Shark
versuchen, 'id = item.getItemId(); 'und setid zu menuItem, wenn Sie in Popupmenu –
@ Shark.I haben den Beitrag aktualisiert – RedGiant