Mai mult
RecyclerView onClick
Are cineva folosind RecyclerView
a găsit o modalitate de a seta o onClickListener la elemente în RecyclerView
?
M-am gândit de a stabili un ascultător pentru fiecare dintre machete pentru fiecare element, dar care pare un pic prea mult hassle
Am'sunt sigur că există o cale pentru `RecyclerView de a asculta pentru "onClick" eveniment, dar nu pot't și-a dat seama.
543
44
Aici este o mai bună și mai puțin strâns împreună pentru a pune în aplicare o
OnClickListener
pentru unRecyclerView
.Fragment de utilizare:
`RecyclerItemClickListener de implementare:
Ca API's-au schimbat radical, ar't mă surprinde dacă ați fost de a crea o
OnClickListener pentru fiecare element. L't atât de mult de un hassle, deși. În punerea în aplicare a
RecyclerView.Adaptor`, tu ar trebui să aibă:La "onClick" metoda:
Eu o fac în acest fel, fără întârzieri nejustificate clase, detectoare etc. Cod simplu în interiorul nostru adaptor. Mai ales soluție mai bună pentru longClick decât cea prezentată mai înainte.
Apoi, în interiorul fragment sau de activitate, a lovit doar:
Check out similare [întrebare][1] @CommonsWare's comentariu link-uri la [acest][2], care pune în aplicare
OnClickListener
de interfață în viewHolder`.Aici's un exemplu simplu de
ViewHolder
:Bazat pe Jacob Tabak's raspuns (+1 pentru el), am fost capabil de a adăuga onLongClick ascultător:
Apoi, puteți utiliza astfel:
Aceasta este ceea ce a lucrat pentru mine. Atașați
OnClickListener " la " onBindView
. Eu nu't într-adevăr știu dacă acest lucru va avea un impact asupra performanței, dar se pare că funcționează bine cu puțin cod.Acest lucru a fost atât de greu pentru mine să am pe element, faceți clic pe ascultător în activitate și, de asemenea, să faceți clic pe ascultător de vedere unic al element care nu se va declanșa pe element, faceți clic pe ascultător. După ce a jucat în jurul cu Jacob Tabak's a răspunde respect răspunsul lui la postul faceți clic pe, dacă nu există alte acțiuni de atingere în interiorul articol sunt prezentate.
Am un custom
OnClickListener
de interfață care au pe element, faceți clic pe evenimentul care deține clic element's a vizualiza și elementul de poziție de la adaptor. Voi prezenta un exemplu de constructor(sau poate fi cu setter) și atașați-l la vedere titularul recipient faceți clic pe ascultător.Am, de asemenea, alte faceți clic pe ascultător în Adaptor(Poate fi în opinia titularului) care se va ocupa de Vizualizarea curentă faceți clic din recipient.
În activitatea aveți nevoie pentru a inițializa adaptor de trecere exemplu de
OnItemClickListener
Și-mi ViewHolder
Aceasta este ceea ce am avut nevoie, în cazul în care cineva consideră că este util:
Sursa: http://blog.csdn.net/jwzhangjie/article/details/36868515
Am soluție bună pentru RecyclerView
's
onItemClickListener pentru elementele și subpunctePasul 1- Creați o interfață
Pasul 2- Apoi, utilizați-l în adaptorul's
onBindViewHolder
metoda în felul următorPasul 3- găsi și configurare reciclator vedere în activitate sau un fragment în care utilizați acest
Pasul 4- în cele din Urmă să implementeze interfața în activitate sau un fragment în care utilizați recyclerview
Aici este ceea ce am făcut. Această soluție suportă atât onClick și onLongClick pe ambele RecyclerView Articole și puncte de Vedere interioara RecyclerView Elemente (interne de vedere).
Am tag viewHolder în vedere alegerea mea :
Si eu folosesc titular.getPosition() pentru a prelua poziția în onClick() metoda (onLongClick este similar) :
O variantă cu getChildPosition, de asemenea, funcționează. Vă rugăm să rețineți că pentru piața internă vedere, în onClick() utilizare :
În mintea mea, avantage al acestei soluții este că, atunci când se face click pe imagine, doar onclick() imagine ascultător este numit întrucât atunci când am combinat Jacob's soluție pentru o RecyclerView Element de vedere și soluția mea de interne vedere RecyclerView Element de vedere onclick() este, de asemenea, numit (atunci când faceți clic pe imagine).
Este mult mai ușor mod de a face acest lucru. Se aplică doar să faceți clic pe în `onBindViewHolder pe rădăcină de vedere.
Luați în considerare acest lucru este punctul dumneavoastră de vedere pentru adaptor,
Apoi face următoarele în adaptor
Puteți trece un
clickListener " la " Adapter
.În "Activitate":
apoi trece la
Adapter
:În
Adapter
'sonCreateViewHolder
:Am dezvoltat o lumina ponderate bibliotecă pentru android, puteți vizita https://github.com/ChathuraHettiarachchi/RecycleClick
și urmați pentru următoarea probă
Puteți pune în aplicare OnClickListener la ViewHolder clasa
Și onBindViewHolder setați punctul dumneavoastră de vedere titular's element
Mult prea simplu și eficient.
În loc de punere în aplicare interfață de Vizualizare.OnClickListener` vedere din interior titularului sau de a crea și de interfață și de punere în aplicare interfață în activitatea dvs. - Am folosit acest cod pentru simplu pe OnClickListener de implementare.
Toate raspunsurile postate pana acum sunt foarte bune soluții, cu toate acestea, dacă nu doriți să se ocupe cu prea multe detalii de implementare, și vreau doar să funcționeze în mod similar cu modul în ListView are, mi-ar recomanda utilizarea Bidirecțională-Vezi, așa cum se vede aici:
https://github.com/lucasr/twoway-view
Rețineți că această punere în aplicare susține, de asemenea, apăsați lung pe elemente, precum și suport pentru presat membre (care este ceva important pe care alte soluții la această întrebare lipsa).
Dacă tu nu't doriți să utilizați întreaga bibliotecă, să ia o privire la ClickItemTouchListener clasă, care poate fi folosit ca un independent, dacă este necesar. Singura problemă am găsit cu ea în acest moment este cu mult apăsați + defilare, se pare a avea comportament incorect.
Dacă doriți pentru a prinde eveniment clic Pe elemente Individuale, atunci doar pună în aplicare
OnClickListener " în " ViewHolder
clasă și apoi faceți clic pe set de ascultatori pe opinii individuale sau întreagaitemView
.Următorul exemplu arată la fel
Anii
RecyclerView
nu are oOnClickListener
și va trebui să-l pună în aplicare noi înșine.Îmi place să adăugați o
OnItemClickListener
interfațaAdaptor cu un "onClick" metodă invocată când faceți clic pe elementul de vedere de la
ViewHolder. Astfel, responsabilitatea de a gestiona faceți clic pe un element este în afara
ViewHolder " și " Adaptor`. Va activității sau fragment care va decide ce să facăAdăugați o interfață pentru ascultător și ascultător obiect.
Ne surprinde click de rădăcină de vedere al elementului și de apel invers, atunci când este declanșat "onClick" ascultator suna de pe adaptor .
Deoarece activitatea sau fragment de fragment, în cazul nostru , vom atribui un ascultător la adaptor și onClick callback vom obține elementul selectat prin poziția și și-a deschis o analiză detaliată a activității de obiect.
Aici este ceea ce am facut Citeste mai mult & download esența aici
Adăugarea la fel aici
CustomItemClickListener.java
ItemsListAdapter.java
Pentru mine, acest lucru este cel mai bun mod: