0

I am trying to set Click Listener to my RecyclerView, but when I click it, nothing happens.

Below is my Adapter code. What I did is attach click events within the ViewHolder within my adapter,

I could't find what wrong here:

public class HomeSetsViewAdapter extends RecyclerView.Adapter<HomeSetsViewAdapter.ViewHolder> {
    private Context context;

    // Pass in the context and posts array into the constructor
    public HomeSetsViewAdapter(Context context, ArrayList<Post> posts) {
        this.posts = posts;
        this.context = context;
    }

    // Store a member variable for the users
    private ArrayList<Post> posts;

    @Override
    public HomeSetsViewAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, final int viewType) {
        // to inflate the item layout and create the holder
        // Inflate the custom layout
        View itemView = LayoutInflater.from(context).inflate(R.layout.layout_viewholderset, parent, false);
        return new HomeSetsViewAdapter.ViewHolder(context, itemView);
    }

    // to set the view attributes based on the data
    // Get the data model based on position
    @Override
    public void onBindViewHolder(ViewHolder holder, int position) {
        Post post = posts.get(position);
        if (position % 2 == 0) {
            holder.getmainPic().setImageResource(R.drawable.pic3);
        } else
            holder.getmainPic().setImageResource(R.drawable.pic4);
        // Set item views based on the data model

    }

    @Override
    public int getItemCount() {
        return posts.size();
    }

    public class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
        // Your holder should contain a member variable
        // for any view that will be set as you render a row

        private ImageView main_pic;
        private Context context;

        // constructor
        public ViewHolder(View itemView) {
            super(itemView);
            this.main_pic = (ImageView) itemView.findViewById(R.id.main_pic);
            // Attach a click listener to the entire row view
            itemView.setOnClickListener(this);
        }

        // constructor
        public ViewHolder(Context context, View itemView) {
            super(itemView);
            this.main_pic = (ImageView) itemView.findViewById(R.id.main_pic);
            this.context = context;
            // Attach a click listener to the entire row view
            itemView.setOnClickListener(this);
        }

        public ImageView getmainPic() {
            return main_pic;
        }

        public void setmainPic(ImageView main_pic) {
            this.main_pic = main_pic;
        }

        // Handles the row being being clicked
        @Override
        public void onClick(View v) {
            Intent intent = new Intent(context, HomePostPagerActivity.class);
            context.startActivity(intent);
        }
    }
}
Bulat
  • 6,869
  • 1
  • 29
  • 52
Eric Chen
  • 15
  • 4

1 Answers1

0

I don't see your item layout file (layout_viewholderset.xml), but you should set the root view of it focusable and clickable, like this:

android:focusable="true"
android:clickable="true"
Gergely Kőrössy
  • 5,620
  • 3
  • 28
  • 44