Unlike ListView, the Android RecyclerView seems way too complicated to implement. Since there is no OnItemClickListener for RecyclerView child, I\'ve been trying to implemen
Thanks all! I've come up with a solution (though it works for me, I'm not sure how efficient the technique is). I'm using View.OnClickListener interface in my RecyclerView.Adapter class. To prevent massive garbage collection, I've assigned the click listener inside onCreateViewHolder method of my RecyclerView.Adapter. Here is the complete implementation of my RecyclerView.Adapter class:
package com.example.evinish.recyclerdemo;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import android.widget.Toast;
import java.util.List;
/**
* Created by evinish on 9/25/2015.
*/
public class MyRVAdapter extends RecyclerView.Adapter implements View.OnClickListener{
List persons;
public MyRVAdapter(List persons) {
this.persons = persons;
}
@Override
public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view= LayoutInflater.from(parent.getContext()).inflate(R.layout.row_layout,parent,false);
MyViewHolder vh=new MyViewHolder(view);
view.setOnClickListener(this);
return vh;
}
@Override
public void onBindViewHolder(MyViewHolder holder, int position) {
holder.company.setText(persons.get(position).getCompany());
holder.occupation.setText(persons.get(position).getOccupation());
holder.name.setText(persons.get(position).getName());
}
@Override
public int getItemCount() {
return persons.size();
}
@Override
public void onAttachedToRecyclerView(RecyclerView recyclerView) {
super.onAttachedToRecyclerView(recyclerView);
}
public void clearAdapter() {
persons.clear();
notifyDataSetChanged();
}
@Override
public void onClick(View v) {
TextView clickedName=(TextView)v.findViewById(R.id.card_text1);
Toast.makeText(v.getContext(),clickedName.getText().toString(),Toast.LENGTH_LONG).show();
}
}
Please let me know if there is a better method for registering click events in RecyclerView.