2016-04-01 23 views
2

ポップアップメニューのすべてのアイテムにいくつかのデータを保存します。すべての項目は、フィードから返された結果に基づいてforループ内でプログラム的に展開されます。Androidポップアップメニュークラスで選択したアイテムの位置を取得する

次の例では、ループインデックスをキーとして各アイテムのデータを格納するために、HashMapstoredOptionを使用します。しかし、onMenuItemClickに選択した項目の位置を取得する方法を見つける必要があります。storedOptionからデータを取得できます。それを行う方法を教えてもらえますか?次の試みの他に、item.getOrder()も試しましたが、メニューにいくつの項目があるかにかかわらず常に0を返します。

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

いただきました。この[値]:このように

? – Shark

+0

PopupMenuで追加すると 'id = item.getItemId();'とsetidをmenuItemにしてみてください。 –

+0

@ Shark.I投稿を更新しました – RedGiant

答えて

1

あなたstoreOptionのキーとしてfeatureList.keyを使用することができ、それらはstoreOptionから値を取得するためにitem.getItemId();を使用しています。その `ShowToast`で

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

    }