2017-07-19 8 views
0

Ich arbeite in der Anwendung von Android genähert, um es zu beenden, aber ich fand das Problem in RecyclerView, und ich wusste nicht, wie man ein Klick-Listener auf die Textansicht eines Elements der RecyclerView implementieren? (Wenn ich in dem Artikel klicken)Recycler Ansicht Klick Listener

ich eine Mehrfachauswahl recyclerview habe ... nur wenn ich das recyclerview Element auswählen, wird die Textview vissible

+0

Dieser Link könnte hilfreich sein https://StackOverflow.com/a/24471410/8164071 –

+0

nein ... hat nicht funktioniert @PriteshVadhiya –

+0

versuche es hier so https://stackoverflow.com/questions/44151979/how-to-add-onclick-listener-to-recycler-view –

Antwort

1

Hier verwenden diese:

Meine recyclerView Reihe hat zwei Textviews:

public class MyViewHolder extends RecyclerView.ViewHolder{ 
     public TextView name,price; 

     public MyViewHolder(View view){ 
      super(view); 
      name = (TextView) view.findViewById(R.id.name); 
      price= (TextView) view.findViewById(R.id.price); 

      name.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 
        Log.e("Test","Name clicked : "+getAdapterPosition()); 
       } 
      }); 


     } 
    } 

aus dieser Position Sie den Wert bekommen kann bestimmter Artikel mit Ihrer DataList.

Hoffe es hilft !!!

+0

Meine Recycler-Ansicht ist eine Multiselect-Recycler-Ansicht ... ie) wenn ich lange drücke, wird der aktuelle View-Eintrag ausgewählt .... erst jetzt ist die Text-View unzulässig ... Ich habe versucht, den Code zu deaktivieren und den fälligen Artikel zu entfernen an den GestureDetector ..Was ist zu tun –

+0

haben Sie irgendeine Funktion auf einzelne Tippen von Recyclerview Zeile ?? – sumit

+0

Ya .. ich habe eine Funktion..Es öffnet eine andere Aktivität –

0

View.OnClickListener Implementieren auf der Textview in dem Recycler-Adapter.

+0

setze die TextView als anklickbar zu –

+0

nein das wird nicht funktionieren @NishanKhadka –

+0

hat nicht funktioniert ,, das ist, warum als eine Frage an erster Stelle –

0

Sie können den Adapter verwenden und vom Adapter können Sie den Klick-Listener für eine bestimmte Komponente (z. B. TextView) angeben.

+0

Meine Recycler-Ansicht ist a Multiselect-Recycler-Ansicht ... ie) wenn ich lange auf den aktuellen View-Eintrag drücke, wird selektiert .... erst jetzt ist die Textansicht zuläßt ... Ich habe deinen Code ausprobiert den Gegenstand aufgrund des GestureDetectorsWas zu tun ist –

0

diese Ihnen helfen könnte ....

public class MyViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener{ 


     TextView textview; 


     public MyViewHolder(View itemView) { 
      super(itemView); 
       itemView.setOnClickListener(this); 

       textview = (TextView) itemView.findViewById(R.id.textview); 


     } 

     @Override 
     public void onClick(View view) { 
      textview = (TextView) itemView.findViewById(R.id.textview); 
      //do your actions here 

     } 
    } 
0

Okay, ich glaube, ich habe Lösung für Ihr Problem:

Zunächst einmal in Ihrem RecyclerView Stück Layout macht das übergeordnete Layout klickbare und Sichtbarkeit Ihres Textview wie weg:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/item_layout 
    android:orientation="vertical" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:clickable="true" 
    android:layout_gravity="center" 
    android:gravity="center" 
    > 
<TextView 
    android:id="@+id/text_title" 
    android:layout_width="match_parent" 
    android:layout_height="50dp"/> 
</LinearLayout> 

machen Ihre Eltern Layout klickbare notwendig ist, und erklären diese Linearlayout in Ihrer ViewHolder Klasse auch wie folgt aus:

class ViewHolder extends RecyclerView.ViewHolder { 
private LinearLayout itemLayout; 
private TextView textItem; 
ViewHolder(final View itemView) { 
super(itemView); 
itemLayout=(LinearLayout) itemView.findViewById(R.id.movie_item); 
textItem=(TextView)itemView.findViewById(R.id.text_title); 
} 

dann statt itemView.setOnClickListe ner, verwenden itemLayout.setOnClickListener() wie folgt:

itemlayout.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View view) { 
     //make your textView or your items Visible 
     //make your textview clickable 
     //set Your itemLayoutClickable as false 

    } 
      }); 

Dann schließlich machen OnClickListener für Ihre Textview:

textItem.setOnClickListener=new View.OnClickListener() { 
        @Override 
        public void onClick(View view) { 

//perform your text click action 
} 
}); 

das Textview wieder unsichtbar zu machen, könnte man einige zusätzliche Logik möchte hinzufügen, wie zum Beispiel das Setzen von Flags, das Markieren von Flags und das Anzeigen der Elemente sichtbar oder unsichtbar und das Benachrichtigen des Adapters

Verwandte Themen