Android:包含自定义行和调用 ContextMenu 的 ListActivity

标签 android contextmenu listactivity

我在 LitsActivity 中有一个 ListView,它由从单独的 XML 文件扩充的行组成。这些行由我为此 ListView 的自定义适配器中的 convertView 方法填充。我试图在每一行上调用上下文菜单。通常,我们通过调用

registerForContextMenu(ourListViewInstance);

onCreate 方法中。但这对我不起作用,onCreateContextMenu 方法没有被调用,因为此时没有列表行,它们稍后出现。我试着用

registerForContextMenu(行);

在我的自定义列表适配器的 getView 方法中,以便每一行都注册为“长按”并且它有效,但由于某些原因它是 Not Acceptable 并且需要通常的方法。

这是我的 ItemsAdapter,它创建 ListView 行的实例:

class ItemsAdapter extends ArrayAdapter<ItemsModel> {

    public ItemsAdapter(ArrayList<ItemsModel> list) {
        super(Items.this, R.layout.custom_row_view, list);
    }

    private ItemsModel getModel(int position) {
        return (((ItemsAdapter) itemsList.getAdapter()).getItem(position));
    }

    @Override
    public View getView(final int position, View convertView, ViewGroup parent) {
        View row = convertView;

        final ItemsModel currentItemModel = getModel(position); // Model class storing data for all the rows. 
        ItemsResourceManager resourceManager = null; // class used to easily get and set row views.

        if (row == null) {
            row = View.inflate(getBaseContext(), R.layout.custom_row_view, null);
            row.setClickable(true);
            row.setFocusable(true);
            row.setBackgroundResource(android.R.drawable.menuitem_background);
            resourceManager = new ItemsResourceManager(row);
            row.setTag(resourceManager);
        } else {
            resourceManager = (ItemsResourceManager) row.getTag(); //class used to easily get and set row views.
        }
        registerForContextMenu(row);  // works for each separate LisView row

        //... skipped setText actions for this row
        }
        return row;
    }
}

我还尝试从任何可聚焦元素中完全清除我的 custom_row_view.xml,但没有帮助。

最佳答案

问题出在我的自定义适配器类中的 onClickListener 中。它阻止了 contextMenu 处理,因为每次都会调用“短”单击。现在,clickListener 和 ContextMenu 处理程序都位于 ListActivity 类中,并且工作正常。

关于Android:包含自定义行和调用 ContextMenu 的 ListActivity,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5848482/

相关文章:

Android - 连接问题

android - 为具有报价问题的 FQL 制作多查询

javascript - Jquery:上下文菜单重置

jquery - 如何从 jQuery contextMenu (2.x) 触发 ClipboardJS

java - setListAdapter 不在 ListActivity 中显示我的字符串数组

android - 在 ListView 中访问特定项目的布局

Android:如何隐藏Seekbar进度?

Android Studio 的模拟器未连接到互联网

WPF 设计时上下文菜单

android - 从 ListActivity 中的 ListView 获取 subview