2016-04-01 20 views
2

Bazı verileri bir açılır menüdeki her öğeye kaydetmek istiyorum. Tüm öğeler, bir beslemeden döndürülen sonuçlara göre bir for döngüsünde programlı olarak şişirilir.Seçilen öğenin konumunu Android açılır menü noktası olarak alma

Aşağıdaki örnekte, her öğenin verilerini döngü indisleri ile anahtar olarak saklamak için bir HashMapstoredOption32 kullanın. Ama onMenuItemClick'da seçilen öğenin konumunu elde etmenin bir yolunu bulmalıyım, böylece verileri storedOption'dan alabilirim. Bana bunu nasıl yapacağımı söyleyen var mı? Aşağıdaki girişimin yanı sıra, item.getOrder()'u da denedim ancak menüde kaç tane öğe olduğuna bakılmaksızın her zaman 0 değerini döndürüyor.

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

Ne dedin 'ShowToast' bu' value'? – Shark

+0

= id = item.getItemId(); 've menuItem setid'i deneyin. –

+0

@ Shark.I eklediğinizde, – RedGiant

cevap

1

Sen storeOption ait anahtar olarak featureList.key kullanabilir ve bunları storeOption gelen değeri elde etmek item.getItemId(); kullanın. Bunun gibi

:

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

    } 
İlgili konular