The RecyclerView is the most advanced version of ListView Android, which was introduced in Lollipop with extended features for the views having multiple items. This widget enables the smooth scolling effect which is more feasible than ListView. The RecylerView is more flexible when you have data collections whose elements change at runtime based on user action or network events. It also forces to use ViewHolder pattern, whereas in ListView it is optional.
CardView extends the FrameLayout class and lets you show information inside cards that have a consistent look across the platform. CardView widgets can have shadows and rounded corners. It can be easily customized as per the need.