В принципе, я хочу показать другое контекстное меню, когда пользователь щелкает или долго нажимает на ячейку в виде сетки. Проблема заключается в том, что если пользователь коротких кликов вызывает прослушиватель OnItemClick, и я вижу, что отладчик достигает кода, который показывает контекстное меню, а не перемещается оттуда в onCreateContextMenu, он переходит в onItemLongClick.Android GridView OnItemLongClick прослушиватель, вызванный после OnItemClick
Я попытался использовать логическое значение, чтобы предотвратить выполнение кода длинного клика, который предотвращает выполнение этого кода, однако даже когда это делается onCreateContextMenu вообще не вызывается.
Если я удаляю прослушиватель onItemLongClick, то прослушиватель коротких сообщений работает правильно, и контекстное меню отображается правильно.
Я знаю, что другие люди задавали вопросы, подобные этому, но я до сих пор не смог найти решение, которое работает. Если кто-то может решить это или указать мне в правильном направлении, пожалуйста, дайте мне знать, спасибо заранее. Баунти будет присуждаться всем, кто может даже указать мне в правильном направлении.
Это упрощенная версия кода для слушателей:
mTGrid.setOnItemClickListener(new OnItemClickListener() {
//this listener should show the context menu for a short click on the gridview.
@Override
public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
mRequiredMenu = "standard";
parent.showContextMenuForChild(v);
}
});
mTGrid.setOnItemLongClickListener(new OnItemLongClickListener() {
//this listener should show the context menu for a long click on the gridview.
@Override
public boolean onItemLongClick(AdapterView<?> parent, View v, int position, long id) {
mRequiredMenu = "options";
parent.showContextMenuForChild(v);
}
});
Это полностью решило мою проблему. Все, что мне нужно было сделать, это полностью удалить прослушиватель onItemLongClick и просто использовать следующий код, чтобы получить выбранную ячейку в onContextItemSelected(): – collusionbdbh
AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) item.getMenuInfo(); \t mSelectedCell = (myCellClass) info.targetView; – collusionbdbh