Я предполагаю, что вы устанавливаете прослушиватель кликов непосредственно для каждого из представлений, соответствующих элементам в списке, вероятно, в методе getView
вашего ListAdapter
с кодом, подобным следующему:
itemView.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(final View v)
{
// DO SOMETHING
}
});
Если вы сделаете это, OnClickListeners
в этих представлениях переопределяет прослушиватель, установленный на уровне ListView
(с registerForContextMenu(listView)
), и ваше контекстное меню никогда не будет вызываться при длинном щелчке.
Правильный способ - настроить меню (с длинным щелчком) и прослушиватель щелчков на уровне ListView
:
registerForContextMenu(listView);
listView.setOnItemClickListener(
new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> a, View v, int position, long l) {
// DO SOMETHING
// selected item is a.getAdapter().getItem(position);
}
});
PS: я отвечаю, потому что у меня была та же проблема, и ячувствую, что принятый ответ с setOnLongClickListener
, вероятно, не является рекомендуемым способом сделать это, если вам нужно контекстное меню.