Implemented ViewHolder pattern for the Adapter