2012-04-10 37 views
0

我正在處理Android ICS聯繫人移植。我想爲加星標(收藏夾)TAB添加一個上下文菜單,但該片段中的ListView非常特殊。有一個正常的ListView,並且ListView中的每個項目都有兩個小的自定義視圖。我想實現這個功能,當用戶長時間按下小視圖時,它會爲我顯示一個上下文菜單。 我該怎麼辦?請給我一個提示!非常感謝!如何在ListView中實現自定義視圖的上下文菜單?

回答

1

當您創建小視圖中添加這種,

registerForContextMenu(YourSmallView); 

,並在你的活動,你可以處理的上下文菜單

@Override 
    public void onCreateContextMenu(ContextMenu menu, View v,ContextMenuInfo menuInfo) { 
super.onCreateContextMenu(menu, v, menuInfo); 
    menu.setHeaderTitle("Context Menu"); 
    menu.add(0, v.getId(), 0, "Action 1"); 
    menu.add(0, v.getId(), 0, "Action 2"); 
} 

@Override 
    public boolean onContextItemSelected(MenuItem item) { 
     if(item.getTitle()=="Action 1"){ 
       function1(item.getItemId()); 
     } 
     else if(item.getTitle()=="Action 2"){ 
      function2(item.getItemId()); 
     } 
     else { 
      return false; 
     } 
    return true; 
    } 

或者你可以設置較長的點擊收聽到您的視圖

view.setOnLongClickListener(listener); 
1

如果您正在使用定製的列表項目,您可以在您的des上註冊特定的回調例程視圖。做這件事的地方在你的bindView()或getView()方法中。

TextView tt = (TextView) v.findViewById(R.id.text1); 
TextView bt = (TextView) v.findViewById(R.id.text2); 
tt.setOnLongClickListener(myLongOnClickListener); 
+0

這將是一個很好的解決方案!但是我不知道如何在這種情況下實現上下文菜單。我應該在這個回調函數中實現所有上下文菜單機制嗎? – alexunder 2012-04-10 11:14:36

+1

我會嘗試以下方法: 'ListView的LV;'' lv.showContextMenuForChild(TT);' 或 'lv.showContextMenu();' 那麼你應該能夠使用標準ContextMenuInflater(見[鏈接] (http://developer.android.com/guide/topics/ui/menus.html))。 – Sambuca 2012-04-11 12:19:47