public override View GetView(int position,  View convertView,  ViewGroup parent)
        {
            View rowView = convertView;
            //reuse view
            if (rowView == null) {
                rowView = _context.LayoutInflater.Inflate (Resource.Layout.PersonCustomLayout, parent, false);
                viewHolder = new ViewHolderItem ();
                viewHolder.txtTemName = rowView.FindViewById<TextView> (Resource.Id.lblPersonName);
                viewHolder.imgItem = rowView.FindViewById<ImageView> (Resource.Id.imgPerson);
                rowView.Tag = viewHolder;
            }
            else
            {
                viewHolder = (ViewHolderItem)rowView.Tag;
            }
            viewHolder.txtTemName.Text = _lstItem [position].PersonName;

            var option=  ImageHelper.GetBitmapOptionsOfImageNonAsync ( _lstItem[position].PersonImage );

            var bitmapSampled= ImageHelper.LoadScaledDownBitmapForDisplay ( _lstItem[position].PersonImage , option , 100 , 100 );

            //to get cirlcle shape H*W should be same
            int intRoundPicResolution;
            if ( bitmapSampled.Height > bitmapSampled.Width )  //only to get circle shape
                intRoundPicResolution = bitmapSampled.Width;
            else
                intRoundPicResolution = bitmapSampled.Height;

            //set bitmap height and width
            bitmapSampled = Bitmap.CreateScaledBitmap ( bitmapSampled , intRoundPicResolution , intRoundPicResolution , false );
            int imgRadius = ( intRoundPicResolution ) / 2;
            using ( var bitmapRoundedCorner =ImageHelper.GetRoundedCornerBitmap ( bitmapSampled , imgRadius ) )
            {
            //				if (viewHolder.imgItem != null && !viewHolder.imgItem.isrecycled))
            //				viewHolder.imgItem.RecycleBitmap ();
                viewHolder.imgItem.SetImageBitmap ( bitmapRoundedCorner );
            }
            bitmapSampled.Dispose ();
            bitmapSampled = null;
            Java.Lang.JavaSystem.Gc ();
            return  rowView;
        }
        public override View GetView(int position, View convertView, ViewGroup parent)
        {
            View rowView = convertView;

            if (rowView == null)
            {
                //create new row view
                rowView               = _context.LayoutInflater.Inflate(Resource.Layout.ItemCustomLayout, parent, false);
                viewHolder            = new ViewHolderItem();
                viewHolder.txtTemName = rowView.FindViewById <TextView> (Resource.Id.lblItemName);
                viewHolder.imgItem    = rowView.FindViewById <ImageView> (Resource.Id.imgItem);
                viewHolder.chkItem    = rowView.FindViewById <CheckBox> (Resource.Id.checkitem);
                viewHolder.Initialize(rowView);                  //to initialize listen for ImgView click
                //tag viewHolder instance to row view.
                rowView.Tag = viewHolder;
            }
            else
            {            //re-use row view
                //fetch viewholder instance from the Tag attached to rowview
                viewHolder = (ViewHolderItem)rowView.Tag;
            }
            //Initialize click event
            //subscribe to event from viewholder ImgView click
            viewHolder.eventHandlerImgViewSelected = () =>
            {
                // publish ImgView click event to ActivityClass
                if (ActionImgSelectedToActivity != null)
                {
                    ActionImgSelectedToActivity(_lstItem[position].ItemName);
                }
            };

            viewHolder.txtTemName.Text = _lstItem [position].ItemName;
            viewHolder.imgItem.SetImageResource(Resource.Drawable.imgItem);
            viewHolder.chkItem.Checked = lstSelectedItem.Contains(_lstItem [position].ItemName) ? true :false;
            viewHolder.chkItem.Tag     = position;
            return(rowView);
        }