Ich habe Recyclerview onclickListener aus dieser Stapelüberlauf -Lösung implementiert. Diese Lösung eignet sich für Klicks auf Recyclerelemente. Aber ich kann nicht herausfinden, welche Unteransicht (z. B. ImageView, Button) aus der Zeile angeklickt wird.
%Vor% onItemClick(view,position)
gibt immer die ID als -1
Wie verfolge ich die Klick-Ansicht?
Unten ist ein ViewHolder
, das zwei Textansichten enthält. title
und description
:
Diesen beiden Untersichten ist eine OnClickListener
zugeordnet, die die benutzerdefinierte OnViewClickListener
-Implementierung aufruft, wobei die angeklickte View
sowie die Position der RecyclerView
Element im Adapter , das das Klickereignis erhalten hat.
Verwenden Sie schließlich View.getId()
, um die ID der angeklickten Ansicht in OnViewClickListener
implementation abzurufen.
Diese Antwort ist insofern veraltet, als sie RecyclerView.getChildPosition(View)
verwendet, was veraltet ist . Versuchen Sie es mit RecyclerView.getChildAdapterPosition(View)
zu ersetzen.
Wenn ich Sie wäre, würde ich nur Listener für jedes ViewHolder
und seine untergeordneten Ansichten erstellen, die Sie hören möchten. Ehrlich gesagt, scheint mir nicht der Nutzen der Verwendung der komplizierteren Methode, auf die Sie verwiesen haben, zu liegen. Außerdem sagt diese Methode nur, dass auf ein Element geklickt wurde, nichts über die untergeordneten Ansichten des Elements.
Gemäß den Dokumenten , RecyclerView.OnItemTouchListener
Diese Funktion wird verwendet, wenn Sie eine Berührung eines Objekts während des Scrollens der Liste erkennen möchten, nicht für regelmäßige oder direkte Berührungen.
Tags festlegen
Sie können Tag auf Ihre Ansichten setzen, während Sie sie initialisieren über:
%Vor%Damit wird das Ansichts-Tag auf 1 gesetzt.
dann In onItemClick-Methode:
%Vor%Tags und Links java android android-recyclerview onitemclicklistener