I had used RecyclerView several times and also handled click listeners. But my question is that in RecyclerView Adapter at which place setting the click listener is better, like in onCreateViewHolder() or onBindViewHolder() or in ViewHolder class. Because, I know at any place we set we can achieve our functionality.
            Asked
            
        
        
            Active
            
        
            Viewed 256 times
        
    0
            
            
         
    
    
        Nigam Patro
        
- 2,760
- 1
- 18
- 33
- 
                    http://stackoverflow.com/questions/24471109/recyclerview-onclick – sumit singh Dec 02 '15 at 10:35
- 
                    @sumitsingh I know this but as per my question which place will be better. – Nigam Patro Dec 02 '15 at 10:40
2 Answers
2
            
            
        You can set click listener for multiple views in your container view for various purposes. Best approach if it is an item click to add listener to container view :
private final OnClickListener mOnClickListener = new MyOnClickListener();
@Override
public MyViewHolder onCreateViewHolder(final ViewGroup parent, final int position) {
    View view = LayoutInflater.from(mContext).inflate(R.layout.containerViewItem, parent, false);
    view.setOnClickListener(mOnClickListener);
    return new MyViewHolder(view);
}
And implement onClick() method for your mOnClickListener .
 
    
    
        Kenan Begić
        
- 1,228
- 11
- 21
- 
                    I know this types of implementation but which will be better as per my question? – Nigam Patro Dec 02 '15 at 10:39
1
            
            
        The onBindViewHolder method is called every time when you bind your view with data.So the best place is to set click listener inside onCreateViewHolder method.
 private final OnClickListener mOnClickListener = new MyOnClickListener();
 @Override
  public ViewHolder onCreateViewHolder(final ViewGroup parent, final  int position) 
      {
       View view = LayoutInflater.from(mContext).inflate(R.layout.recycler_list_item, parent, false);
       view.setOnClickListener(mOnClickListener);
       return new ViewHolder(view);
     }
 @Override
 public void onClick(final View view) {
      }
 
    
    
        sumit singh
        
- 588
- 1
- 5
- 20