如何获得长按菜单以立即显示在GridView上?

时间:2019-05-14 17:06:58

标签: gridview contextmenu

我的应用有一个GridView(显示在DialogFragment中),其中显示了ColourCell个。我希望用户能够长按任何ColourCell并看到一个弹出上下文菜单。他们还可以单击选择ColourCell

我可以使其大部分工作,但是我必须长按两次ColourCell才能看到弹出菜单。第一次长按,什么都没有发生。然后,我再次长按,菜单出现了这次(以及以后的时间)。

我的DialogFragment中有以下内容:

({mUsersColoursArrayList中的Colours,要显示在ColourCell s中; mGVCurrentColoursGridView

SelColourAdapter mColourAdapter =
        new SelColourAdapter(
                mContext,
                mUsersColours);
mGVCurrentColours.setAdapter(mColourAdapter);

mGVCurrentColours.setOnItemClickListener(new AdapterView.OnItemClickListener() {
    @Override
    public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
        // Select clicked cell, and get current colour
        ColourCell clicked = view.findViewById(R.id.colour_cell);
        if(clicked == null) return;
        clicked.setTicked(true);
    }
});

mGVCurrentColours.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
    @Override
    public boolean onItemLongClick(AdapterView<?> adapterView, View view, int i, long l) {
        registerForContextMenu(view);
        return false;
    }
});

我认为问题在于第一次长按会注册菜单,然后第二次实际显示该菜单,但是我很可能错了。

0 个答案:

没有答案