2012-12-31 29 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

相关问题