2012-12-31 54 views
0

我使用基礎適配器來填充列表視圖,此列表的每一行都有3個ImageView獲取ContextMenu,當在列表視圖中長按特定行時

我想說明一個ContextMenu並獲得圖像位置時,長按這些圖像之一(不是點擊列表中的行,但點擊圖片本身),我試圖膨脹listview行的活動並獲得圖像,然後註冊此圖像爲contextMenu([registerForContextMenu(imgLeft)]),但沒有任何工作。

我認爲該行中的每個圖像調用事件onLongClickListener,但我有一個問題,就是我怎麼能在方法調用getView(顯示開)在baseAdapter(沒有在這裏活動)的contextMenu()... ?或者我可以如何在baseAdapter中註冊contextMenu的圖像......?

我在這裏和谷歌搜索了很多解決方案,沒有得到任何東西。

回答

1

爲每個ImageView註冊ContextMenu可能工作。像這樣:

@Override 
public View getView(int arg0, View arg1, ViewGroup arg2) { 
    if (arg1 == null) { 
     LayoutInflater vi = (LayoutInflater) cmx.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     arg1 = vi.inflate(R.layout.services_item, null); 
    } 
    ImageView serviceThumb = (ImageView) arg1.findViewById(R.id.thumbIView); 

    registerForContextMenu(serviceThumb); 

    serviceThumb.setOnCreateContextMenuListener(new OnCreateContextMenuListener() { 

     @Override 
     public void onCreateContextMenu(ContextMenu menu, View v,ContextMenuInfo menuInfo) { 
      AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo)menuInfo; 
      menu.setHeaderTitle("Test"); 
      for (int i = 0; i< 5; i++) { 
       menu.add(Menu.NONE, i, i, i + " - Test"); 
      } 
    } 
    }); 
} 
+0

我雖然關於這一點,但我無法在適配器類中獲取方法registerForContextMenu(),因爲它擴展了baseAdapter類而不是Activity。 – jamil82

+0

謝謝隊友。這解決了我的問題。只是事情是我必須長按視圖打開上下文菜單。有沒有其他方法可以在單擊時打開上下文菜單。不長按 – satyapol

相關問題