2011-12-27 1 views
0

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

Благодаря

ответ

4

Check this out:

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

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

+0

ура я получил – akd

+0

@akdurmus: Хорошая работа! – hwrdprkns

0

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

1

Я предполагаю, что вы настраиваете прослушиватель кликов непосредственно на каждом из видов, соответствующих элементам в списке, возможно, в 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, вероятно, не рекомендуется для этого, если вам нужно контекстное меню.