Recyclerview addOnItemTouchListener get whichsubview wird in der Zeile angeklickt

8

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

zurück

Wie verfolge ich die Klick-Ansicht?

    
iCoder 14.10.2015, 11:05
quelle

4 Antworten

7

Unten ist ein ViewHolder , das zwei Textansichten enthält. title und description :

%Vor%

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.

    
Vaishak Nair 14.10.2015 16:03
quelle
5

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.

    
Ari 14.10.2015 12:58
quelle
1

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%     
Vishavjeet Singh 05.11.2015 07:19
quelle
0

Versuchen Sie, den Unteransichten OnClickListeners hinzuzufügen.

    
Máté Széll 02.11.2015 19:50
quelle