0

我使用基本适配器来填充列表视图,该列表的每一行都有 3 ImageView

我想ContextMenu在长按其中一个图像时显示一个并获取图像位置(不是通过单击列表行,而是单击图像本身),我试图listview在活动中膨胀该行并获取图像然后注册此图像用于contextMenu([registerForContextMenu(imgLeft)])但没有任何效果。

我想onLongClickListener在行中的每个图像上调用事件,但我遇到了一个问题,即如何在方法()contextMenu中的baseAdapter(此处没有活动)中调用(show-open getView)...?或者我如何contextMenubaseAdapter...中注册这些图像?

我在这里和谷歌搜索了很多解决方案,但一无所获。

4

1 回答 1

1

ContextMenu为每个 ImageView注册可能会起作用。像这样:

@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");
            }
    }
    });
}
于 2012-12-31T09:22:18.917 回答