I have a RecyclerView which I'm populating with items as described by the layout below.
<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/cv_item_display"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="1dp"
android:clickable="true"
android:foreground="?android:attr/selectableItemBackground">
    <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="50dp"
            android:orientation="horizontal"
            android:weightSum="9">
    .
    .
    .
    </LinearLayout>
</android.support.v7.widget.CardView>
Whenever the CardView referenced by cv_item_display is clicked inside RecyclerView, I see ripple effect on Card BUT when I attach an OnClickListener to the card, I don't get ripple effect any more. Below is the code for ViewHolder where I attach OnClickListener.
public class RosterViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener{
    TextView tvStudentCount, tvRosterName;
    ImageView ivDelete, ivView;
    CardView cvItemDisplay;
    public RosterViewHolder(View itemView) {
        super(itemView);
        tvStudentCount = (TextView) itemView.findViewById(R.id.tv_question_student_count);
        tvRosterName = (TextView) itemView.findViewById(R.id.tv_questionnaire_roster_name);
        ivDelete = (ImageView) itemView.findViewById(R.id.iv_delete);
        ivView = (ImageView) itemView.findViewById(R.id.iv_view);
        cvItemDisplay = (CardView) itemView.findViewById(R.id.cv_item_display);
        cvItemDisplay.setOnClickListener(this);
        ivDelete.setOnClickListener(this);
        ivView.setOnClickListener(this);
    }
    @Override
    public void onClick(View view) {
        final int position = getAdapterPosition();
        switch (view.getId()) {
            case R.id.iv_delete:
               mRealm.executeTransaction(new Realm.Transaction() {
                   @Override
                   public void execute(Realm realm) {
                       mRealm.where(RosterEntry.class).equalTo("rosterId", mRealmResults.get(position).getId()).findAll().deleteAllFromRealm();
                       mRealmResults.deleteFromRealm(position);
                   }
               });
               break;
            case R.id.iv_view:
               Utils.startRosterItemsActivity(view.getContext(), mRealmResults.get(position).getName(), mRealmResults.get(position).getId(), false);
               break;
            case R.id.cv_item_display:
               startAttendanceActivity(mRealmResults.get(position).getId());
               break;
        }
    }
}
EDIT: I also identified some weird behavior - ripple effect shows in landscape mode but not in portrait mode.
