Как получить меню длинного нажатия для немедленного отображения в GridView? - PullRequest
0 голосов
/ 14 мая 2019

Мое приложение имеет GridView (показано DialogFragment), которое показывает число ColourCell с. Я хочу, чтобы пользователь мог долго нажимать любую ColourCell и видеть всплывающее контекстное меню. У них также есть возможность щелкнуть, чтобы выбрать ColourCell.

Я могу заставить его работать в основном, но мне нужно дважды нажать ColourCell, чтобы увидеть всплывающее меню. Первый раз, когда я долго нажимаю, ничего не происходит. Затем я снова нажимаю и на этот раз появляется меню (и последующие разы).

В моем DialogFragment есть следующее:

(mUsersColours - это ArrayList из Colours для отображения в ColourCell с; 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;
    }
});

Думаю, проблема в том, что первое долгое нажатие регистрирует меню, а затем второе показывает его, но я могу ошибаться.

...