2016-04-01 9 views
2

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 HashMapstoredOption, 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(); 
    } 

    } 
+0

Was ist das 'value' in diesem' ShowToast'? – Shark

+0

versuchen, 'id = item.getItemId(); 'und setid zu menuItem, wenn Sie in Popupmenu –

+0

@ Shark.I haben den Beitrag aktualisiert – RedGiant

Antwort

1

Sie featureList.key als Schlüssel Ihrer storeOption verwenden könnte und sie item.getItemId();, um den Wert von storeOption zu bekommen.

So:

public DynamicPopUpMenu{ 

    private Map<String,FeatureList> storedOption = new HashMap(); 

    public static 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(f.key, f); 
      count++; 
     } 

     menu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() { 
      public boolean onMenuItemClick(MenuItem item) { 
       AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) item.getMenuInfo(); 
       int id = item.getItemId(); 
       FeatureList mFeatureList = (FeatureList)storedOption(id) 
       new ShowToast(context,Integer.toString(value)); // show position in a toast 
       return true; 
      } 
     }); 

     menu.show(); 
    } 

    } 
Verwandte Themen