1. Add Support Libary: dependencies { compile 'com.android.support:appcompat-v7:23.1.1' compile 'com.android.support:recyclerview-v7:23.1.1' compile 'com.squareup.picasso:picasso:2.5.2' } Add RecyclerView to the layout File: Add the following code in your activity.xml file. <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="app.androidrecyclerview.MainActivity"> <android.support.v7.widget.RecyclerView android:id="@+id/list" android:layout_width="match_parent" android:layout_height="match_parent" android:padding="5dp" android:layout_marginTop="8dp" /> </RelativeLayout> Create a custom row Layout Add the following code in your custom_row.xml file: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" android:padding="20dp" android:orientation="vertical"> <ImageView android:id="@+id/image" android:layout_width="match_parent" android:layout_height="100dp" android:background="#11000000" android:scaleType="centerCrop"/> <TextView android:id="@+id/text" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:textSize="18sp"/> </LinearLayout> Create a Class: MainActivity.Java public class MainActivity extends AppCompatActivity { private List<String> list = new ArrayList<String>(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); RecyclerView mRecyclerView = (RecyclerView) findViewById(R.id.list); mRecyclerView.setHasFixedSize(true); mRecyclerView.setLayoutManager(new LinearLayoutManager(this)); arrayList(); } public void arrayList(){ for (int i = 0; i< 20; i++){ list.add("This is row of number "+ i); } } } Creating RecyclerView Adapter class public class Adapter extends RecyclerView.Adapter<Adapter.ViewHolder> { private List<String> list ; public Context context; ViewHolder viewHolder; int lastPosition = -1; public Adapter(List<String> list, Context context) { this.list = list; this.context = context; } @Override public int getItemCount() { return list.size(); } public void onBindViewHolder(final ViewHolder viewHolder, final int position ) { viewHolder.textView.setText(list.get(position)); Picasso.with(context).load(R.drawable.image) .into(viewHolder.imageView); viewHolder.textView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Toast.makeText(v.getContext(), "OnClick :" + list.get(position), Toast.LENGTH_SHORT).show(); } }); if(position >lastPosition) { Animation animation = AnimationUtils.loadAnimation(context, R.anim.up_from_bottom); viewHolder.itemView.startAnimation(animation); lastPosition = position; } } @Override public Adapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { //Inflate the layout, initialize the View Holder View itemLayoutView = LayoutInflater.from(parent.getContext()) .inflate(R.layout.item_list, null); viewHolder = new ViewHolder(itemLayoutView); return viewHolder; } // initializes textview and imageview to be used by RecyclerView. public static class ViewHolder extends RecyclerView.ViewHolder { public TextView textView; public ImageView imageView; public ViewHolder(View view) { super(view); textView = (TextView) view.findViewById(R.id.text); imageView = (ImageView) view.findViewById(R.id.image); } } }