2016-03-26 8 views
0

Ich habe eine Recycleransicht mit Karten implementiert und möchte onClick Funktionen auf jeder der Karten implementieren. Grundsätzlich habe ich zwei Klassen, nämlich die MainActivity- und die RVAdapter-Klasse.Wie kann ich im RecyclerView auf Karten klicken?

Dies ist, wie ich die Onclick-Funktion innerhalb der Adapter Klasse implementieren:

@Override 
public void onBindViewHolder(final ShopViewHolder shopViewHolder, final int i) { 
    shopViewHolder.shopNameTV.setText(shops.get(i).name); 
    shopViewHolder.categoryTV.setText(shops.get(i).category); 
    shopViewHolder.phoneNumberTV.setText(shops.get(i).phoneNumber); 
    shopViewHolder.ratingsTV.setText(shops.get(i).ratings); 
    shopViewHolder.emailTV.setText(shops.get(i).email); 

    final Shop shop = shops.get(i); 
    shopViewHolder.shopNameTV.setOnClickListener(new View.OnClickListener(){ 

     @Override 
     public void onClick(View v){ 
      Log.d("test","onclickk here" + i); 
     } 
    }) ; 
} 

In meiner XML-Datei, die die Karten enthält:

<RelativeLayout 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:padding="16dp" 
    android:onClick="onBindViewHolder" 
    > 
    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:id="@+id/shopnameTV" 
     /> 

das Problem jedoch ist, dass wenn ich auf die Karten, Es führt mich zu dem Fehler, der besagt, dass onBindViewHolder nicht in der Hauptaktivitätsklasse ist.

Wie löse ich diesen Fehler? Oder wie übergebe ich die Variablen nach onClick an die RVAdapter-Klasse anstatt an die Haupt-Aktivitätsklasse?

Antwort

0

Die Eigenschaft android: onClick funktioniert nur, wenn die benannte Methode in der Aktivität vorhanden ist, die die Ansicht hostet. Also in Ihrem Fall wird Android gehen für ein Verfahren auf der Aktivität suchen mit dieser Unterschrift des Klick zu handhaben:

public void onBindViewHolder(View v) 

Der Fehler zeigen Sie sehen, dass Android kann diese Methode nicht gefunden.

Entfernen Sie stattdessen die onClick-Eigenschaft aus der XML-Ansicht und registrieren Sie einen Klick-Listener auf der Kartenansicht selbst, ähnlich wie bei shopViewHolder.shopNameTV.

Verwandte Themen