2014-07-14 75 views
0

在我的應用程序中,我在每個項目列表中都附加了彈出菜單。當我們點擊彈出式菜單圖標時,彈出式菜單還有兩個項目。我在我的活動中實施了OnMenuItemClickListener以偵聽彈出式菜單項點擊,它工作正常。但問題是,我該如何才能知道listitem id(不是彈出菜單項ID),當我在彈出菜單中點擊圖標的列表視圖任何item.The彈出菜單代碼如下:當我點擊PopUp菜單項時如何獲得listitem id?

public void showPopup(View v) { 
     PopupMenu popup = new PopupMenu(this, v); 
     popup.setOnMenuItemClickListener(this); 
     popup.inflate(R.menu.actions); 
     popup.show(); 
    } 

    @Override 
    public boolean onMenuItemClick(MenuItem item) { 
     switch (item.getItemId()) { 
      case R.id.menu_play: 
       return true; 
      default: 
       return false; 
     } 
    } 
+0

你在哪裏打電話showPopup? – pskink

+0

@pskink在我的XML文件imageview onclick事件 – user818455

+0

好吧...所以你的問題是不是真的關於「如何存儲一些價值和讀取onMenuItemClick回調」,而是「我已經創建onClick attrubire從XML和唐'噸知道如何獲得父列表項視圖的ID「? PopupMenu與這個問題根本沒有關係,對吧? –

回答

3

請告訴我什麼是「列表項ID」你想知道嗎?我懷疑這是「listitem視圖的ID爲」。可能你正在考慮「職位」,對吧?

我不知道你在哪裏調用showPopup(視圖V)從,但你也需要有傳位置:

public void showPopup(View v, int listItemPosition) { 
    PopupMenu popup = new PopupMenu(this, v); 
    popup.setOnMenuItemClickListener(this); 
    popup.inflate(R.menu.actions); 
    popup.show(); 
} 

你的目標是要知道在這個位置onMenuItemClick(MenuItem項目)回調。
實現這一目標的最簡單的方法是創建變量「listItemPositionForPopupMenu」,存儲這個位置並在onMenuItemClick回調閱讀:

private int listItemPositionForPopupMenu; 

public void showPopup(View v, int listItemPosition) { 
    listItemPositionForPopupMenu = listItemPosition; 
    PopupMenu popup = new PopupMenu(this, v); 
    popup.setOnMenuItemClickListener(this); 
    popup.inflate(R.menu.actions); 
    popup.show(); 
} 

@Override 
public boolean onMenuItemClick(MenuItem item) { 
    switch (item.getItemId()) { 
     case R.id.menu_play: 
      // read the listItemPositionForPopupMenu here 
      return true; 
     default: 
      return false; 
    } 
} 

你也可以做到這一點在許多其他方面,比如創建你own OnMenuItemClickListener聽衆與listItemPosition變量在構造函數中創建自定義接口onMenuItemClick(MenuItem item,int listItemPosition)。或者,你可以創建一個匿名類,那麼你就需要有listItemPositionForPopupMenu成員變量:

public void showPopup(View v, final int listItemPosition) { 
    PopupMenu popup = new PopupMenu(this, v); 
    popup.setOnMenuItemClickListener(new OnMenuItemClickListener() { 
     @Override 
     public boolean onMenuItemClick(MenuItem item) { 
      switch (item.getItemId()) { 
       case R.id.menu_play: 
        // read the listItemPosition here 
        return true; 
       default: 
        return false; 
      } 
     } 
    }); 
    popup.inflate(R.menu.actions); 
    popup.show(); 
} 
+0

是的我想知道lisitem的觀點編號 – user818455

+0

我的問題是我如何獲得listItemPosition當我點擊彈出菜單圖標的值?您正在傳遞listItemPosition showPopup方法,但我沒有價值傳遞給此方法。我需要價值 – user818455

+0

我已經更新了我的答案,以存儲列表項目視圖的ID而不是位置。 –

相關問題