2011-07-07 6 views
7

Chciałbym mieć oba rodzaje kliknięć na listView - onClick i LongClick.ListView nie uruchamia fire setOnLongClickListener, tylko setOnItemClickListener

I zostały wdrożone to tak:

this.listViewSub = (ListView) this.findViewById(R.id.listsub); 

this.listViewSub.setOnItemClickListener(new OnItemClickListener() { 
     @Override 
     public void onItemClick(final AdapterView parent, final View view, final int position, 
       final long id) { ... } }); 

     // listen to long click - to share texts 
    this.listViewSub.setOnLongClickListener(new OnLongClickListener() { 
     @Override 
     public boolean onLongClick(View v) { ... } }); 

Ale does't ogień długim kliknięciem. Ktoś ma pojęcie, dlaczego?

Odpowiedz

24

Musisz włączyć LongClickable

list.setLongClickable(true); 

i

list.setOnItemLongClickListener(new OnItemLongClickListener() { 
     @Override 
     public boolean onItemLongClick(AdapterView<?> arg0, View arg1, 
       final int arg2, long arg3) { 

} 
}); 
+0

Dzięki! Rozwiązałem mój problem :) I BTW - nie musisz robić setLongClickable kodu dolnego, jego ładniejszego, gdy określisz go poprzez XML: android: longClickable = "true" – Ofershap

+1

Dokumentacja 'setOnItemLongClickListener' mówi, że" Jeśli ten widok nie jest długo klikalny, staje się długi klikalny. " – Vadim

+8

I to nie działa dla mnie ... :( – Vadim

0

onLongClick zwraca wartość true, jeśli wywołanie zwrotne zajęło długie kliknięcie, w przeciwnym razie false. Jeśli więc zdarzenie zostanie obsłużone tą metodą, zwróć true.

+0

Dodałem punkt przerwania wewnątrz tej metody i nie zatrzymuje się tam. Wygląda na to, że nie uruchamia zdarzenia. – Ofershap

6

@Vadim są adapter Twojego ListView jest rozciąga się od BaseAdapter? jeśli tak, to musisz również ustawić convertView.setLongClickable (true); w getView().

1

Dla mnie musiałem ustawić android:longClickable="true" w pliku XML, który zawiera mój układ ListView wiersz (nie układ ListView), aby element był długo klikalny.

+0

Spośród wielu proponowanych rozwiązań, które widziałem dla tego problemu (i próbowałem WSZYSTKIE), to jest jedyny, który pracował dla mnie. –

Powiązane problemy