Как прослушать длинный щелчок по элементу навигации?

Я разрабатываю приложение для Android, используя библиотеку дизайна и библиотеку appCompat. Я столкнулся с некоторыми проблемами, когда пытался прослушать длинный щелчок по пункту меню. В моем приложении есть NavigationView в качестве бокового меню, внутри этого навигационного представления у меня было меню с множеством элементов. Я могу слушать щелчок этих элементов, но я не могу слушать длинный щелчок. Кто-нибудь знает, как мне это реализовать?

Спасибо.


person Anderson Silva    schedule 30.09.2015    source источник


Ответы (2)


обновить

Вы можете использовать:

Menu myMenu = navigationView.getMenu();
MenuItem myItem = myMenu.findItem(R.id.my_item);

myItem.setOnLongClickListener(new View.OnLongClickListener() {
    @Override
     public boolean onLongClick(View v) {
       // do something 

    }
});
person Loolooii    schedule 30.09.2015
comment
Это установит onLongclickListener в моем NavigationView, но я должен реализовать его в элементе представления навигации. - person Anderson Silva; 30.09.2015
comment
@AndersonNunesdaSilva, пожалуйста, взгляните на мой код сейчас и посмотрите, поможет ли он. - person Loolooii; 30.09.2015
comment
Для меня метод setOnLongClickListener(...) не существует. Любые решения? stackoverflow.com/q/37899080/4583267 - person Thomas Vos; 19.06.2016
comment
@ThomasVos посмотри на мой ответ внизу - person Noah; 08.10.2020

Сделайте так, но вы должны установить popup_layout.xml в папку MENU и написать в тегах <menu>, а не layout layout или что-то в этом роде.

в моем классе Java я написал это для своего списка и важно написать R.menu.yourlayout):

listView = (ListView) findViewById(R.id.listView);

listView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {

    @Override
    public boolean onItemLongClick(AdapterView<?> parent, View v, int position, long id) {
        PopupMenu p = new PopupMenu(ViewListContents.this, v);
        MenuInflater inflater = p.getMenuInflater();
        inflater.inflate(R.menu.popup_layout, p.getMenu());
        p.show();
        return true;
    }
});

Если у вас есть какие-либо вопросы, задайте их мне в комментариях.

person Noah    schedule 08.10.2020