проблема setOnLongClickListener и setOnClickListener - PullRequest
0 голосов
/ 28 декабря 2011

У меня есть список.Чего я хотел бы добиться, так это то, что когда я долго щелкаю по любому элементу, он отображает диалоговое меню.Однако у меня также есть слушатель щелчков.он срабатывает после долгого щелчка.Как я могу отменить это или есть способ игнорировать действие clcik для longclick.

Спасибо

Ответы [ 3 ]

4 голосов
/ 28 декабря 2011

Проверьте это :

Существует специальный метод для setOnLongClickListener. Просто убедитесь, что вы setLongClickable, чтобы быть правдой для вашего ListView! Вы должны отделить определенных слушателей для обычного клика и длинного клика.

Кроме этого, попробуйте опубликовать часть своего кода. Это позволит сообществу лучше помочь вам.

1 голос
/ 08 ноября 2012

Я предполагаю, что вы устанавливаете прослушиватель кликов непосредственно для каждого из представлений, соответствующих элементам в списке, вероятно, в методе getView вашего ListAdapter с кодом, подобным следующему:

itemView.setOnClickListener(new OnClickListener()
{
   @Override
   public void onClick(final View v)
   {
      // DO SOMETHING
   }
 });

Если вы сделаете это, OnClickListeners в этих представлениях переопределяет прослушиватель, установленный на уровне ListViewregisterForContextMenu(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, вероятно, не является рекомендуемым способом сделать это, если вам нужно контекстное меню.

0 голосов
/ 28 декабря 2011

Если вы хотите сделать это правильно, прочтите Контекстное меню .В противном случае вы можете сделать это простым, но грязным способом, используя всплывающие диалоговые окна и переопределяя список onItemLongClickListener

.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...