Skip to content

Instantly share code, notes, and snippets.

@ruben-h
Last active August 29, 2015 14:22
Show Gist options
  • Save ruben-h/427746682d8053936357 to your computer and use it in GitHub Desktop.
Save ruben-h/427746682d8053936357 to your computer and use it in GitHub Desktop.

Example of click listener in RecyclerView

static class ActionItemViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
    @InjectView(R.id.actionItemLayout) LinearLayout actionItemLayout;
    @InjectView(R.id.actionIcon) ImageView actionIcon;
    @InjectView(R.id.actionTitle) TextView actionTitle;

    OrganizationContactAction mItem; //Keep item ref for clickevents
    private ActionItemViewHolderClicks listener; //click event listener

    public interface ActionItemViewHolderClicks {
        void onActionClicked(OrganizationContactAction action);
    }

    public ActionItemViewHolder(View view, ActionItemViewHolderClicks listener) {
        super(view);
        ButterKnife.inject(this, view);
        this.listener = listener;
        actionItemLayout.setClickable(true);
        actionItemLayout.setOnClickListener(this);
    }

    @Override
    public void onClick(View view) {
        listener.onActionClicked(mItem);
    }
}

And using it to get click events in onCreateViewHolder:

@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    if (TYPE_ACTION == viewType) {
        final View view = LayoutInflater.from(context).inflate(R.layout.orgdetail_action_item, parent, false);
        return new ActionItemViewHolder(view, new ActionItemViewHolder.ActionItemViewHolderClicks() {
            @Override
            public void onActionClicked(OrganizationContactAction action) {
                EventBus.getDefault().post(new ActionClickedEvent(action));
            }
        });
    }
    return null;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment