我的应用有一个GridView
(显示在DialogFragment
中),其中显示了ColourCell
个。我希望用户能够长按任何ColourCell
并看到一个弹出上下文菜单。他们还可以单击选择ColourCell
。
我可以使其大部分工作,但是我必须长按两次ColourCell
才能看到弹出菜单。第一次长按,什么都没有发生。然后,我再次长按,菜单出现了这次(以及以后的时间)。
我的DialogFragment
中有以下内容:
({mUsersColours
是ArrayList
中的Colours
,要显示在ColourCell
s中; mGVCurrentColours
是GridView
)
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;
}
});
我认为问题在于第一次长按会注册菜单,然后第二次实际显示该菜单,但是我很可能错了。