2017-10-02 8 views
0

J'ai donc ViewHolderstitle et description, et en cliquant dessus, ils feront exactement la même chose. sont définies les méthodes setOnClickListener dans cette méthode:Comment puis-je appliquer un onClickListener à plusieurs viewholders

@Override 
public void onBindViewHolder(final RecycleViewAdapter.ViewHolder holder, int position) { 
    holder.title.setOnClickListener(new View.OnClickListener(){ 
     // does A 
    }); 
    holder.description.setOnClickListener(new View.OnClickListener() { 
     // does A 
    }); 
} 

Y at-il une autre façon de le faire à part de l'extension d'une classe abstraite?

+0

Faire un récipient pour les vues de la vôtre, comme une partie de votre support, et appliquez l'écouteur de clic sur ce –

Répondre

1

Ne pas écrire OnClickListner dans la méthode onBindViewHolder comme il a appelé à chaque fois que vous faites défiler la liste

vous devez faire en classe viewholder

public class CustomViewHolder extends RecyclerView.ViewHolder { 


     TextView tv_desc, tv_title; 

     public PlanetViewHolder(View itemView) { 
      super(itemView); 

      tv_desc = (TextView) itemView.findViewById(R.id.tv_desc); 
      tv_title = (TextView) itemView.findViewById(R.id.tv_title); 
      itemView.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View view) { 

      //your code of on click 
       } 
      }); 
     } 
    } 
+0

ne créez pas 'new View.OnClickListener()' juste implémentez l'interface 'View.OnClickListener' dans la classe' CustomViewHolder' – pskink